HTTPS单项认证

HTTPS单向认证
本文只展示使用制作好的CA证书进行HTTPS的单向认证
前提条件:使用libcurl动态库

unsigned char resp[1024];
int pro_http_write_data(void* pBuffer, int nSize, int nMemByte, void* pParam)
{
if(NULL == pBuffer || NULL == pParam )
{
return -1;
}
memcpy((char *)pParam,(char *)pBuffer,nSize * nMemByte);
return nMemByte;
}
void main()
{
CURL *curl;
curl = curl_easy_init(); //初始化
curl_easy_setopt(curl, CURLOPT_URL, “https://www.example.com”); //设置post address
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 13L); ///设置超时
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10L); //重连超时
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); //启用时会汇报所有的信息
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, pro_http_write_data);//接收数据回调
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void )resp); //接收数据存放
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1); // 验证服务器证书有效性
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2);// 检验证书中的主机名和你访问的主机名一致
curl_easy_setopt(curl, CURLOPT_CAINFO, “/oem/data/cacert.pem”); // 指定 CA 证书路径
res = curl_easy_perform(curl); //开启连接
/
Check for errors */
if(res != CURLE_OK)
fprintf(stderr, “curl_easy_perform() failed: %s\n”,curl_easy_strerror(res));
printf(“result res = %d, resp is %s\r\n”, res, resp); //打印接收到的网页
curl_easy_cleanup(curl);
}

cacert.pem文件连接https://curl.se/docs/caextract.html

打印的内容:
在这里插入图片描述

说明:
1.CA证书一般可由一个根文件,一个用户公钥,一个用户私钥组成,并可通过openssl在本地生成。
2.生成的文件可以转化成不同的文件格式
根证书 rootcert.cer
openssl x509 -in rootcert.cer -out rootcert.der -outform der
openssl x509 -in rootcert.der -inform der -outform pem -out rootcert.pem
用户公钥 clientcert.cer
openssl x509 -in clientcert.cer -out clientcert.der -outform der
openssl x509 -in clientcert.der -inform der -outform pem -out clientcert.pem
用户私钥 clientkey.key
openssl rsa -in clientkey.key -out clientkey.der -outform der
openssl rsa -inform der -outform PEM -in clientkey.der -out clientkey.pem
3.一般也只验证证书的数字签名,不在往下验证书里的其它信息,如果需要验证许多证书里的内容就得在制作证书的时候做好那些参数,而制作证书是比较麻烦的,一般都是买的比较好,不在本地自己做。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值