單向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 ca.crt -out ca.pfx
導出的證書復制到windows上,雙擊安裝,按照向導導入到 “受信任的根證書頒發機構” ,即可。