定义
SSL的英文全称是Secure Sockets Layer,中文名为安全套接层协议层,它是网景(Netscape)公司提出的基于WEB应用的安全协议。SSL连接是在Web服务器和Web客户机之间建立经过身份验证和加密会话的Web协议。
目的
为TCP/IP连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证,确保在网络通信中敏感信息(如信用卡号、访问授权信息、服务器返回的敏感数据等)的安全传输,防止信息被窃取、篡改或伪造。
TCP/IP连接握手
首先建立TCP/IP连接的握手例行程序。
服务器验证
通过验证服务器的公钥为客户机验证服务器。
加密算法选择
一旦服务器通过验证,服务器即会选择客户机和服务器都支持的并在具体的国家/地区所实施的限制内的最强密码算法。
加密SSL连接建立
最终,一个加密的SSL连接便建立了。在此之后,在客户机和服务器之间发送的所有信息(包括所有的HTTP请求和响应以及客户机请求的URL)都经过加密。
握手协议(SSL - Handshake Protocol或称SSL - HP)
在握手期间,服务器向客户机证实身份、选择加密算法、客户机向服务器证实身份(可选)、生成公用会话密钥以及建立加密的SSL连接。
记录协议(SSL - Record Protocol或称SSL - RP)
用于对数据进行封装、加密、压缩等操作,确保数据在传输过程中的安全性和完整性。
在MySQL中的应用
要在MySQL中配置SSL连接,需要进行一系列操作,如生成SSL证书、修改配置文件、启动MySQL服务及设置用户必须使用SSL连接等。例如,在服务器上安装了MySQL但未初始化时,需切换到安装目录下执行特定程序(如./bin/mysql_ssl_rsa_setup)来生成ssl - key等证书;在服务器上的MySQL服务器已经初始化并在运行中时,需先关闭mysql服务,再执行该程序来生成证书,然后修改MySQL配置文件my.cnf ,在[mysqld]段增加如ssl - ca、ssl - cert、ssl - key等相关SSL参数的指定,启动MySQL后查看SSL连接状态,客户端连接时使用相应的证书(如ca.pem/client - cert.pem/client - key.pem )作为自己的客户端证书,还可配置某用户必须使用ssl连接,若不使用ssl则连接失败。
在ActiveMQ中的应用
使用ActiveMQ的Java API或客户端库(如MQTT - Demo中的MQTT协议)建立SSL连接时,需要指定使用SSL协议并提供必要的认证信息。例如,使用Paho MQTT Java客户端库,可以设置相关连接参数来建立SSL连接。