2017-02-20 34 views
0

我正在嘗試在nginx服務器和客戶端(瀏覽器/郵遞員)之間建立雙向SSL連接。 我想知道是否應該可以告訴nginx信任瀏覽器/郵遞員的密鑰,假設nginx請求和驗證客戶端的證書。 具體而言,應該怎樣把在nginx的可以針對瀏覽器(作爲客戶端)測試雙向SSL嗎?

server { 
    listen 443; 
    ssl on; 
    ssl_certificate /etc/nginx/ssl/newcert.crt; 
    ssl_certificate_key /etc/nginx/ssl/newkey.pem; 


    ssl_session_timeout 15m; 
    ssl_protocols SSLv3 TLSv1; 
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP; 
    ssl_prefer_server_ciphers on; 

    ssl_verify_client on; 
    ssl_verify_depth 2; 

    # what should be the content of that file?? 
    >>>>>> ssl_client_certificate /etc/nginx/ssl/trust/client.crt; 


} 

的那一段我沒能找到有關這方面的資料......

感謝。

回答

0

ssl_client_certificate指令指向包含用於簽署客戶的證書請求證書頒發機構文件。有關詳細信息,請參見this document

如果您正在使用您的客戶端證書一自簽名的證書頒發機構,該程序是這樣的:

  1. 創建一個自簽名證書作爲證書頒發機構使用。請參閱OpenSSL CA(1)瞭解簡化方案以管理此步驟。
  2. 爲客戶端生成證書請求。例如:

    openssl req -newkey rsa:2048 -nodes -keyout user.key -out user.req 
    
  3. 從步驟1使用CA簽署來自步驟2的請求來產生用於所述客戶端的證書。參見上面的OpenSSL CA(1)。

  4. 將步驟3中的證書轉換爲PKCS#12格式的文件,以便客戶端可以導入它。例如:

    cat user.key user.crt | openssl pkcs12 -export -out user.p12 
    
+0

我的客戶是瀏覽器。我認爲它擁有自己的客戶端證書。我設法在chrome上安裝了我的服務器自簽名證書,但這只是ssl的一種方式。也許我錯過了你的答案 - 我可以爲Chrome生成一個客戶端證書嗎?我如何確保在認證時使用此證書?我的nginx會告訴它以某種方式使用它? – user1092867

相關問題