资源简介
其中包含openssl1.1.1在win10下编译的方法,以及VSRSA、ECC、SM2身份认证demo源码,以及命令行生成证书的文档。目前openssl1.1.1和1.1.1a测试SM2会报错,原因可能和openssl支持不够有关。

代码片段和文件信息
#include “stdafx.h“
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#pragma warning(disable:4996)
#define MAXBUF 1024
char caCertFilePath[MAX_PATH]={0}; //ca证书路径
char clientCertFilePath[MAX_PATH]={0}; //服务端证书路径
char clientPrivateFilePath[MAX_PATH]={0}; //服务端私钥路径
void ShowCerts(SSL * ssl)
{
X509 *cert;
char *line;
cert = SSL_get_peer_certificate(ssl);
// SSL_get_verify_result()是重点,SSL_CTX_set_verify()只是配置启不启用并没有执行认证,调用该函数才会真证进行证书认证
// 如果验证不通过,那么程序抛出异常中止连接
if(SSL_get_verify_result(ssl) == X509_V_OK){
printf(“证书验证通过\n“);
}
if (cert != NULL) {
printf(“数字证书信息:\n“);
line = X509_NAME_oneline(X509_get_subject_name(cert) 0 0);
printf(“证书: %s\n“ line);
//free(line);
line = X509_NAME_oneline(X509_get_issuer_name(cert) 0 0);
printf(“颁发者: %s\n“ line);
//free(line);
X509_free(cert);
} else
printf(“无证书信息!\n“);
}
void Auth_Two()
{
int sockfd len;
struct sockaddr_in dest;
char buffer[MAXBUF + 1];
SSL_CTX *ctx;
SSL *ssl;
unsigned int myport;
char *myip=“127.0.0.1“;
myport=7838;
/*if (argc != 5) {
printf(“参数格式错误!正确用法如下:\n\t\t%s IP地址 端口\n\t比如:\t%s 127.0.0.1 80\n此程序用来从某个“
“IP 地址的服务器某个端口接收最多 MAXBUF 个字节的消息“
argv[0] argv[0]);
system(“pause“);
exit(0);
}*/
/* SSL 库初始化,参看 ssl-server.c 代码 */
SSL_library_init();
OpenSSL_add_all_algorithms();
SSL_load_error_strings();
ctx = SSL_CTX_new(SSLv23_client_method());
if (ctx == NULL) {
ERR_print_errors_fp(stdout);
system(“pause“);
exit(1);
}
// 双向验证
// SSL_VERIFY_PEER---要求对证书进行认证,没有证书也会放行
// SSL_VERIFY_FAIL_IF_NO_PEER_CERT---要求客户端需要提供证书,但验证发现单独使用没有证书也会放行
SSL_CTX_set_verify(ctx SSL_VERIFY_PEER|SSL_VERIFY_FAIL_IF_NO_PEER_CERT NULL);
// 设置信任根证书
if (SSL_CTX_load_verify_locations(ctx caCertFilePathNULL)<=0){
ERR_print_errors_fp(stdout);
system(“pause“);
exit(1);
}
/* 载入用户的数字证书, 此证书用来发送给客户端。 证书里包含有公钥 */
/* FILE *clientf=fopen(“../file/client.crt““r“);
char bufStr[5000]={0};
fread(bufStr15000clientf);
fclose(clientf);*/
if (SSL_CTX_use_certificate_file(ctx clientCertFilePath SSL_FILETYPE_PEM) <= 0) {
ERR_print_errors_fp(stdout);
system(“pause“);
exit(1);
}
/* 载入用户私钥 */
/*FILE *clientRsaf=fopen(“../file/client_rsa_private.pem.unsecure““r“);
memset(bufStr05000);
fread(bufStr15000clientRsaf);
fclose(clientRsaf);*/
if (SSL_CTX_use_PrivateKey_file(ctx clientPrivateFilePath SSL_FILETYPE_PEM) <= 0) {
ERR_print_errors_fp(stdout);
system(“pause“);
exit(1);
}
/* 检查用户私钥是否正确 */
if (!SSL_CTX_check_private_key(ctx)) {
ERR_print_errors_fp(stdout);
system(“pause“);
exit(1);
}
WSADATA wsd;
int resStartup = WSAStartup(MAKEWORD(22)&wsd);
if(0 != resStartup)
{
print
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 0 2019-02-01 13:42 openSSL\Ecc_Cert\.rnd
文件 712 2019-01-21 15:48 openSSL\Ecc_Cert\ca.crt
文件 428 2019-01-21 15:46 openSSL\Ecc_Cert\ca.csr
文件 310 2019-01-21 15:46 openSSL\Ecc_Cert\ca.key
文件 42 2019-01-21 16:36 openSSL\Ecc_Cert\ca.srl
文件 602 2019-01-21 15:53 openSSL\Ecc_Cert\client.crt
文件 432 2019-01-21 15:53 openSSL\Ecc_Cert\client.csr
文件 310 2019-01-21 15:52 openSSL\Ecc_Cert\client_ecc_private.pem
文件 598 2019-01-21 15:51 openSSL\Ecc_Cert\server.crt
文件 436 2019-01-21 15:51 openSSL\Ecc_Cert\server.csr
文件 310 2019-01-21 15:51 openSSL\Ecc_Cert\server_ecc_private.pem
文件 2380288 2019-01-18 14:55 openSSL\openssl RSA身份认证源码\OpensslClient\Debug\libcrypto-1_1.dll
文件 500224 2019-01-18 14:55 openSSL\openssl RSA身份认证源码\OpensslClient\Debug\libssl-1_1.dll
文件 39936 2019-01-22 11:18 openSSL\openssl RSA身份认证源码\OpensslClient\Debug\OpensslClient.exe
文件 361160 2019-01-22 11:18 openSSL\openssl RSA身份认证源码\OpensslClient\Debug\OpensslClient.ilk
文件 732160 2019-01-22 11:18 openSSL\openssl RSA身份认证源码\OpensslClient\Debug\OpensslClient.pdb
文件 0 2019-02-01 13:53 openSSL\openssl RSA身份认证源码\OpensslClient\Ecc_Cert\.rnd
文件 712 2019-01-21 15:48 openSSL\openssl RSA身份认证源码\OpensslClient\Ecc_Cert\ca.crt
文件 428 2019-01-21 15:46 openSSL\openssl RSA身份认证源码\OpensslClient\Ecc_Cert\ca.csr
文件 310 2019-01-21 15:46 openSSL\openssl RSA身份认证源码\OpensslClient\Ecc_Cert\ca.key
文件 42 2019-01-21 16:36 openSSL\openssl RSA身份认证源码\OpensslClient\Ecc_Cert\ca.srl
文件 602 2019-01-21 15:53 openSSL\openssl RSA身份认证源码\OpensslClient\Ecc_Cert\client.crt
文件 432 2019-01-21 15:53 openSSL\openssl RSA身份认证源码\OpensslClient\Ecc_Cert\client.csr
文件 310 2019-01-21 15:52 openSSL\openssl RSA身份认证源码\OpensslClient\Ecc_Cert\client_ecc_private.pem
文件 606 2019-01-21 16:36 openSSL\openssl RSA身份认证源码\OpensslClient\Ecc_Cert\client_sm2.crt
文件 440 2019-01-21 16:35 openSSL\openssl RSA身份认证源码\OpensslClient\Ecc_Cert\client_sm2.csr
文件 310 2019-01-21 16:35 openSSL\openssl RSA身份认证源码\OpensslClient\Ecc_Cert\client_sm2_private.pem
文件 598 2019-01-21 15:51 openSSL\openssl RSA身份认证源码\OpensslClient\Ecc_Cert\server.crt
文件 436 2019-01-21 15:51 openSSL\openssl RSA身份认证源码\OpensslClient\Ecc_Cert\server.csr
文件 310 2019-01-21 15:51 openSSL\openssl RSA身份认证源码\OpensslClient\Ecc_Cert\server_ecc_private.pem
............此处省略491个文件信息
相关资源
- Openssl给文件传输加密
- openssl 简介(中文)
- 东大金智身份认证系统在Sun平台上的
- openssl 手册中文版
- centos 7 openssh7.9p 201810月最新版,基于
- win64OpenSSL_Light
- 利用openssl和curl库获取https服务端证书
- linux c 使用openssl实现SHA1WithRSA实现,签
- openssl win7 64位
- indy10以上openssl支持所需要的文件。
- openssl098e-0.9.8e-17.el6.centos.src.rpm
- openssl-0.9.8k_WIN32.rar
- vs2010 win7下编译的openssl-1.0.2n静态库
- OpenSSL-1.0.2m静态库
- 基于OpenSSL库的ECDSA签名与验证和文档
- openssl-0.9.8k_WIN32(RSA密钥生成工具)
- OpenSSL-win64库使用依赖文件
- openssl.exe 0.9.8版本
- windows64的curl库支持openssl)
- openssl(arm64armv7sarmv7x86_64i386)
- openssl-1.0.2k
- openssl-1.0.2n.tar.gz
- apache-httpd-2.2.24-x64-openssl安装版 msi安装
- vs2013编译好的OpenSSL_1_0_2静态库和动态
- httpd-2.2.22-win32-x86-openssl-0.9.8t.msi
- openssl绿色版
- CentOS-6.6-x86_64 nginx 依赖 pcre-devel zli
- OpenSSL_Light_Win64.msi
- openssl API 函数库
- openssl-1.0.2c win x64静态库
评论
共有 条评论