openssl:

  • 公钥加密数据,私钥解密数据
  • 私钥签名数据,公钥验证数据

百度百科:

SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。已经成为Internet上保密通讯的工业标准。 SSL能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证。SSL协议要求建立在可靠的传输层协议(TCP)之上。SSL协议的优势在于它是与应用层协议独立无关的,高层的应用层协议(例如:HTTP,FTP,TELNET等)能透明地建立于SSL协议之上。SSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商及服务器认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。 OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

openssl证书申请

国际CA机构GlobalSign中国 数字证书颁发中心 http://cn.globalsign.com/
腾讯云免费SSL网址 https://console.qcloud.com/ssl
AWS Certificate Manager

openssl实例

openssl客户和服务端步骤-图

HTTPS 协议

为了避免这样的安全威胁,HTTPS 应运而生。HTTPS 是一个确保数据在 web 浏览器与 web 服务器之间传输安全的协议。

HTTPS 是由 HTTP 协议+SSL 协议构成。SSL 协议通过对信息进行加密,为网络通信提供安全保障。它运用了非对称密钥机制,这种机制是将公钥自由对外分发,而私钥只有信息接收者才有。

当浏览器用 HTTPS 协议请求一个页面时,下面的过程也会发生:

  • 浏览器向 server 发出 https 请求,server 监听 443 端口,这个端口是 web server 用来监听使用了 HTTPS 协议的请求。
  • 一旦 web 浏览器与 web 服务器之间成功建立连接,SSL 握手流程就开始了。

在握手流程中,浏览器和服务器会针对数据的加密算法进行协商并答成一致。过程如下:

  • 浏览器向服务器发送一些自身的信息(例如其支持的SSL版本);
  • 服务器响应类似信息,例如通信过程中将要使用的SSL版本;
  • 服务器会向浏览器发送证书,证书中包含了加密数据的公钥,发布者信息,有效期以及服务端唯一标识;
  • 浏览器核实该证书,并发送信息通知服务器证书已验证完成;
  • 浏览器向服务器发送“Change cipher spec”指令:浏览器将对数据进行加密;
  • 服务器向浏览器发送“Change cipher spec”指令,服务端将要对待发送的数据进行加密。

理解 HTTPS 协议