• 大小: 4.69MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-17
  • 语言: 其他
  • 标签: openssl  身份认证  

资源简介

其中包含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个文件信息

评论

共有 条评论