SSL:(Server socket layer) 是一种保证网络两个节点进行安全通信的协议。
IETF对SSL进行了标准化,制定了RFC2246规范,并将其称为TLS。从技术上讲,SSL3.0和TLS1.0差别非常小。
SSL和TLS建立在TCP/IP协议基础上。建立在SSL上的HTTP协议称为HTTPS,默认端口443。
SSL使用加密技术实现会话双方信息的安全传递,加密技术的基本原理:
数据从一端发送到另一端,发送者先对数据加密,然后再把它发给接收者。接收者收到后,必需先解密才获得真正的数据。
除此外,SSL还采用身份认机制,确保通信双方都能验证对方真实身份。
获取证书有两种方式:
1.从权威机制购买证书。
安全证书由国际权威的证书机构(CA),如VeriSign和Thawte颁发,它们保证了证书的可信性。
一个安全证书只对一个IP有效,多个IP必需购买多个证书。
2.创建自我签名的证书。
如果通信双方只关心数据在网络上的可以安全传输,并不需要对方进行身份验证,这种情况下,可以创建自多签名证书。
这证书达不到身份认证的目地,但可以用于加密通信。
用java的自我签名工具签名:
keytool -genkey -alias <别名> -keyalg <加密算法> -keystore <生成的证书保存路径>
参数说明:
genkey: 生成一对非对称密钥
alias: 密钥对的别名,这个别名对外公开
keyalg: 加密算法。常见的RSA(加密长度2048位)、RC4(128位)、DH(1024位)
keystore: 安全证书的保存路径
例:
keytool -genkey -alias slkey -keyalg RSA -keystore e:\sk.keys