https學習,resin下配置https

hgc0907發表於2016-12-04

一、使用加密演算法作用:

非對稱加密演算法: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配置檔案開啟註釋
# OpenSSL certificate configuration
openssl_file : key/gryffindor.crt
openssl_key : keys/gryffindor.key
openssl_password : my-password

8、啟動應用即可


注意:resin 需要使用pro版本,具體的SSL簡要說明,配置方法在上面的resin官方文件都有說明,很多文章也是參照官網文件的翻譯,學習嘛,還是看原汁原味的官網文件

更好。

 

 

相關文章