單向SSL設定實例:
server{ listen 443 ssl; server_name www.123.com; root /data/wwwroot/www.123.com/ ; index index.html ; ssl_certificate server.crt; ssl_certificate_key server.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!eNULL; ssl_prefer_server_ciphers on; location / { } }
設定說明:
1. 443端口为ssl监听端口。 2. ssl on表示打开ssl支持。 3. ssl_certificate指定crt文件所在路径,如果写相对路径,必须把该文件和nginx.conf文件放到一个目录下。 4. ssl_certificate_key指定key文件所在路径。 5. ssl_protocols指定SSL协议。 6. ssl_ciphers配置ssl加密算法,多个算法用:分隔,ALL表示全部算法,!表示不启用该算法,+表示将该算法排到最后面去。 7. ssl_prefer_server_ciphers 如果不指定默认为off,当为on时,在使用SSLv3和TLS协议时,服务器加密算法将优于客户端加密算法。
注意:
nginx在原始碼安裝的時候,預設沒有開啟ssl模組,需要重新編譯安裝,安裝指令如下:
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install
然後重啟nginx
雙線SSL設定範例
server{ listen 443 ssl; server_name www.123.com; root /data/wwwroot/www.123.com/ ; index index.html ; ssl_certificate server.crt; ssl_certificate_key server.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!eNULL; ssl_prefer_server_ciphers on; ssl_client_certificate ca.crt; //这里的ca.crt是根证书公钥文件 ssl_verify_client on; location / { } }
說明:
就是比單向多了加粗的倆行,但是配置了雙向後,伺服器還要對客戶端的憑證進行認證,一般情況下,我們單向SSL使用較為普遍。
註:
因為我們的證書是為自建CA簽發的證書,瀏覽器並不信任該證書,所以在訪問的時候會提示「證書不受信任」。
這種情況,只需要把CA的根憑證匯入到瀏覽器中 「受信任的根憑證授權單位」 中就不會再提示 「憑證不受信任」。
匯出為windows可用的憑證方式如下:
[root@localhost root_ca]# openssl pkcs12 -export -inkey private/ca.key -in
匯出的憑證複製到windows上,雙擊安裝,按照嚮導匯入 「受信任的根憑證授權單位」 ,即可。
以上是nginx如何設定ssl的詳細內容。更多資訊請關注PHP中文網其他相關文章!