资源简介
其中包含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 32位 包
- openssl-1.0.1p.tar.gz
- openssl-1.0.1t.tar.gz
- RedHat 6.5离线安装openssl-devel顺序
- openssl-1.0.0o.tar.gz
- openssl1.0.1e_x86_x64lib和dll文件
- 基于口令的身份认证机制的设计与实
- win64openssl_light-1-0-2.exe
- OpenSSL接口说明文档
- OPENSSL算法库之rc4算法使用
- openssl密钥生成工具
- openSSL头文件和静态库文件以及动态库
- openssl-1.0.1e-57.el6.x86_64.rpm
- openssl-fips-2.0.12.tar.gz
- Open SSl 1.1
- 编译好的openssl
- openssl1.1.1源码
- openldap-2.2.29-db-4.3.29-openssl-0.9.8a-win32
- openssl-cookbook 中文版
- centos 7.x openssh7.8p RPM包
- win10上编译好的openssl
- ios openssl 1.0.1g
- QT5.12所需ssleay32.dll,libeay32.dll 1.0.2q
- 统一身份认证系统
- OpenSSL头文件和lib我的系统是windows7/
- centos7 离线安装gcc pcre-devel openssl-dev
- openssl 安装包
- vs2015编译的openssl-1.0.2l包含静态库(
- Win64OpenSSL-1.1.1
- AIX5.3、6.1、7.1可用的openssl0.9.8和open
评论
共有 条评论