使用openssl实现 https

原创 2015年07月06日 23:07:53


生成公私钥(证书)

https://openhome.alipay.com/doc/docIndex.htm?url=https://openhome.alipay.com/doc/viewKbDoc.htm?key=236615_428849&type=info

注意 PKCS8格式私钥  是给java服务端用的,C++客户端使用RSA格式


PEM格式证书

PEM – Openssl使用 PEM(Privacy Enhanced Mail)格式来存放各种信息,它是 openssl 默认采用的信息存放方式。Openssl 中的 PEM 文件一般包含如下信息:

内容类型:表明本文件存放的是什么信息内容,它的形式为“——-BEGIN XXXX ——”,与结尾的“——END XXXX——”对应。

使用PEM格式存储的证书
—–BEGIN CERTIFICATE—–
MIICJjCCAdCgAwIBAgIBITANBgkqhkiG9w0BAQQFADCBqTELMAkGA1UEBhMCVVMx
………
1p8h5vkHVbMu1frD1UgGnPlOO/K7Ig/KrsU=
—–END CERTIFICATE—–
使用PEM格式存储的私钥
—–BEGIN RSA PRIVATE KEY—–
MIICJjCCAdCgAwIBAgIBITANBgkqhkiG9w0BAQQFADCBqTELMAkGA1UEBhMCVVMx
………
1p8h5vkHVbMu1frD1UgGnPlOO/K7Ig/KrsU=
—–END RSA PRIVATE KEY—–
使用PEM格式存储的证书请求文件
—–BEGIN CERTIFICATE REQUEST—–
MIICJjCCAdCgAwIBAgIBITANBgkqhkiG9w0BAQQFADCBqTELMAkGA1UEBhMCVVMx
………
1p8h5vkHVbMu1frD1UgGnPlOO/K7Ig/KrsU=
—–END CERTIFICATE REQUEST—–


DER – 辨别编码规则 (DER) 可包含所有私钥、公钥和证书。它是大多数浏览器的缺省格式,并按 ASN1 DER 格式存储。它是无报头的 - PEM 是用文本报头包围的 DER。

CER  - 一般指使用DER格式的证书

编码格式转换

真正需要转换的是.pem.der这两种证书文件,因为他们使用不同的编码方式


证书链

从https网站下载证书时,如果是3级证书链,则证书验证的时候,也需要有父证书,否则证书验证不过

Poco::Net::initializeSSL();
    CString cstrRootCer = pahy::GetResourceDirectory()+_T("\\conf\\certificates\\rootcert.pem"); //所有
    CString cstrTestCer = pahy::GetResourceDirectory()+_T("\\conf\\certificates\\Test.cer");            
    string strRootCer = TOOL_STRING::UnicodeToUTF8((LPCTSTR)cstrRootCer);
    string strTestCer = TOOL_STRING::UnicodeToUTF8((LPCTSTR)cstrTestCer);
    SharedPtr<InvalidCertificateHandler> ptrCert = new ConsoleCertificateHandler(false); 
    Context::Ptr ptrContext = new Context(Context::TLSV1_2_CLIENT_USE, "", strTestCer, strRootCer, Context::VERIFY_RELAXED, 9, false, "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH");
    SSLManager::instance().initializeClient(0, ptrCert, ptrContext);



openssl下https实现流程

WeTest 导读 用epoll编写一个高并发网络程序是很常见的任务,但在epoll中加入ssl层的支持则是一个不常见的场景。腾讯WeTest服务器压力测产品,在用户反馈中收到了不少支持https协议...

Https + OPENSSL

二,HTTPS 2.1 HTTPS介绍 先来看HTTPS的概念 我们一般的http走的是80端口,而https走的是443端口,有什么不一样的地方吗? 很简单,...

基于 openssl + vs2013 https客户端 Demo

环境:win7 + vs2013 + openssl-1.0.2fopenssl-1.0.2f 采用 lib 编译注意:设置 工程的包含目录 到 编译好的openssl 的 \include\open...
  • bkxiaoc
  • bkxiaoc
  • 2016年03月31日 10:56
  • 2193

Https openssl

一,总结前一次的学习 在前一天的学习中我们知道、了解并掌握了Web Server结合App Server是怎么样的一种架构,并且亲手通过Apache的Http Server与Tomcat6进行了...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

C++ 简单实现HTTP GET/POST 请求

HTTP(超文本传输协议)是一种客户端与服务端的传输协议,最早用于浏览器和服务器之间的通信,后来因为其使用灵活、方便等特点,广泛用于客户端与服务端的通信。文章将简单介绍HTTP协议,同时以C++方式分...
  • cwqcwk1
  • cwqcwk1
  • 2013年11月15日 18:38
  • 25495

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

【开源】Https数据读取C++实现

一、基本实现           //HttpsData.h #include class CHttpsData { public: CHttpsData(); virtual ~CHttp...
  • sxyaxy
  • sxyaxy
  • 2014年03月05日 21:38
  • 6409

在客户端程序中使用OpenSSL来实现HTTPS在证书认证上的一些分析

在客户端程序中使用OpenSSL来实现HTTPS在证书认证上的一些分析 ssl握手一般流程: http://blog.csdn.net/wzsy/article/details/38332...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用openssl实现 https
举报原因:
原因补充:

(最多只允许输入30个字)