一、使用加密算法作用:
非对称加密算法:RSA,DSA/DSS
对称加密算法:AES,RC4,3DES
HASH算法:MD5,SHA1,SHA256
1、其中非对称加密算法用于在握手过程中加密生成的密码
2、对称加密算法用于对真正传输的数据进行加密
3、而HASH算法用于验证数据的完整性
4、服务器和用户双方必须都有证书。由此可见,SSL协议是通过非对称密钥机制保证双方身份认证,并完成建立连接,在实际数据通信时通过对称密钥机制保障数据安全性
5、数字证书在用户公钥后附加了用户信息及CA的签名。公钥是密钥对的一部分,另一部分是私钥。公钥公之于众,谁都可以使用。私钥只有自己知道。由公钥加密的信息只能由与之相对应的私钥解密。为确保只有某个人才能阅读自己的信件,发送者要用收件人的公钥加密信件;收件人便可用自己的私钥解密信件。同样,为证实发件人的身份,发送者要用自己的私钥对信件进行签名;收件人可使用发送者的公钥对签名进行验证,以确认发送者的身份。
6.单向认证,就是传输的数据加密过了,但是不会校验客户端的来源
7.双向认证,如果客户端浏览器没有导入客户端证书,是访问不了web系统的,找不到地址,想要用系统的人没有证书就访问不了系统HTTPS概念
二、通讯过程
SSL协议通信过程
(1) 浏览器发送一个连接请求给服务器;服务器将自己的证书(包含服务器公钥S_PuKey)、对称加密算法种类及其他相关信息返回客户端;
(2) 客户端浏览器检查服务器传送到CA证书是否由自己信赖的CA中心签发。若是,执行4步;否则,给客户一个警告信息:询问是否继续访问。
(3) 客户端浏览器比较证书里的信息,如证书有效期、服务器域名和公钥S_PK,与服务器传回的信息是否一致,如果一致,则浏览器完成对服务器的身份认证。
(4) 服务器要求客户端发送客户端证书(包含客户端公钥C_PuKey)、支持的对称加密方案及其他相关信息。收到后,服务器进行相同的身份认证,若没有通过验证,则拒绝连接;
(5) 服务器根据客户端浏览器发送到密码种类,选择一种加密程度最高的方案,用客户端公钥C_PuKey加密后通知到浏览器;
(6) 客户端通过私钥C_PrKey解密后,得知服务器选择的加密方案,并选择一个通话密钥key,接着用服务器公钥S_PuKey加密后发送给服务器;
(7) 服务器接收到的浏览器传送到消息,用私钥S_PrKey解密,获得通话密钥key。
(8) 接下来的数据传输都使用该对称密钥key进行加密。
三、生成证书(自定义证书)
Key 通常指私钥。
CSR 是CertificateSigningRequest的缩写,即证书签名请求,这不是证书,可以简单理解成公钥,生成证书时要把这个提交给权威的证书颁发机构。
CRT 即 certificate的缩写,即证书。
X.509 是一种证书格式.对X.509证书来说,认证者总是CA或由CA指定的人,一份X.509证书是一些标准字段的集合,这些字段包含有关用户或设备及其相应公钥的信息。
.cer格式文件俗称证书,但这个证书中没有私钥,只包含了公钥;
.pfx格式文件不仅包含了公钥,还包含了私钥,当然这个私钥是加密的,不输入密码是解不了密的;
.jks格式文件表示java密钥存储器(javakey store),它可以同时容纳N个公钥跟私钥,是一个密钥库;
.keystore格式文件其实跟.jks基本是一样的;
四、resin下配置https,官网文档已经写得非常详细:http://www.caucho.com/resin-4.0/admin/security-ssl.xtp
1、resin支持OpenSSL,JSSE两种SSL的实现方式,但官网推荐使用OpenSSl
2、下载安装OpenSSL,在resin根目录下简历keys目录$RESIN_HOME/keys
3、在keys目录下建立一个openssl.cnf文件,主要是生成证书时指向该文件使用,$RESIN_HOME/keys/openssl.cnf,内容如下:
[ req ] default_bits = 1024 distinguished_name = req_distinguished_name [ req_distinguished_name ] C = 2 letter Country Code, for example US C_default = ST = State or Province ST_default = L = City L_default = O = Organization Name O_default = OU = Organizational Unit Name, for example 'Marketing' OU_default = CN = your domain name, for example www.hogwarts.com CN_default = emailAddress = an email address emailAddress_default =
4、生成私钥key,命令行进入具体OpenSSL安装目录执行openssl.exe
"C:\Program Files\GnuWin32\bin\openssl.exe" \ genrsa -des3 -out gryffindor.key 1024
5、生成一个自定义证书,自己生成的证书时不被浏览器认可的,所以有提示,除了提示外其他加密过程都一样
"C:\Program Files\GnuWin32\bin\openssl.exe" req -new \ -config ./openssl.cnf -key gryffindor.key -out gryffindor.csr
6、配置resin服务https监听,resin.xml
<resin xmlns="http://caucho.com/ns/resin"> <cluster id="http-tier"> <server id="a" address="192.168.1.12"> <http port="443"> <openssl> <certificate-file>keys/gryffindor.crt</certificate-file> <certificate-key-file>keys/gryffindor.key</certificate-key-file> <password>my-password</password> <!-- disables SSLv3 --> <protocol>-sslv3</protocol> </openssl> </http> </server> ... </resin> 7、resin.property配置文件打开注释8、启动应用即可# OpenSSL certificate configuration openssl_file : key/gryffindor.crt openssl_key : keys/gryffindor.key openssl_password : my-password
注意:resin 需要使用pro版本,具体的SSL简要说明,配置方法在上面的resin官方文档都有说明,很多文章也是参照官网文档的翻译,学习嘛,还是看原汁原味的官网文档
更好。