https学习,resin下配置https

一、使用加密算法作用:

非对称加密算法: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


  

  
    
      
        keys/gryffindor.crt
        keys/gryffindor.key
        my-password
        
        
        -sslv3
      
   
  

  ...
  

7、resin.property配置文件打开注释
# OpenSSL certificate configuration
openssl_file : key/gryffindor.crt
openssl_key : keys/gryffindor.key
openssl_password : my-password

8、启动应用即可


注意:resin 需要使用pro版本,具体的SSL简要说明,配置方法在上面的resin官方文档都有说明,很多文章也是参照官网文档的翻译,学习嘛,还是看原汁原味的官网文档

更好。

 

 

你可能感兴趣的:(https学习,resin下配置https)