PHP程序員玩轉(zhuǎn)Linux系列 Nginx中的HTTPS詳解
PHP程序員玩轉(zhuǎn)Linux系列文章:
1.PHP程序員玩轉(zhuǎn)Linux系列-怎么安裝使用CentOS
2.PHP程序員玩轉(zhuǎn)Linux系列-lnmp環(huán)境的搭建
3.PHP程序員玩轉(zhuǎn)Linux系列-搭建FTP代碼開發(fā)環(huán)境
4.PHP程序員玩轉(zhuǎn)Linux系列-備份還原MySQL
5.PHP程序員玩轉(zhuǎn)Linux系列-自動備份與SVN
6.PHP程序員玩轉(zhuǎn)Linux系列-Linux和Windows安裝nginx
7.PHP程序員玩轉(zhuǎn)Linux系列-nginx初學(xué)者引導(dǎo)
創(chuàng)建一個HTTPS服務(wù)器
在nginx.conf配置文件中,在server塊里面通過listen指令指定ssl的參數(shù),設(shè)置好服務(wù)器證書和私鑰文件的路徑
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate www.example.com.crt;
ssl_certificate_key www.example.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
...
}
服務(wù)器證書是一個公開實體,它會被發(fā)送給每一個連接過來的客戶端.私鑰是一個安全實體,它應(yīng)該被存儲在一個限制權(quán)限的文件中.但是nginx的master進程必須能夠讀到該私鑰文件. 私鑰也可以和證書放在一個文件里面.
ssl_certificate www.example.com.cert; ssl_certificate_key www.example.com.cert;
在這個例子里面,文件的訪問權(quán)限應(yīng)該被限制.盡管證書和私鑰在一個文件里面,只有證書會被發(fā)送給客戶端.
ssl_protocols 和ssl_ciphers 指令可以被用來限制連接,只包含高版本的TLS和SSL/TLS的密碼
從nginx 1.0.5版本開始,nginx默認(rèn)使用ssl_protocols SSLv3 TLSv1和ssl_ciphers HIGH:!aNULL:!MD5.從nginx 1.1.13 和 1.0.12 版本開始,默認(rèn)更新成了 ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2
一個單一的HTTP和HTTPS服務(wù)
可以配置一個服務(wù)同時支持HTTP和HTTPS請求, 在虛擬主機中使用listen指令,一個帶著ssl參數(shù),一個不帶參數(shù).
server {
listen 80;
listen 443 ssl;
server_name www.example.com;
ssl_certificate www.example.com.crt;
ssl_certificate_key www.example.com.key;
...
}
在nginx 0.7.13和更早的版本中,SSL不能被單獨設(shè)置監(jiān)聽socket.只能通過ssl指令為全部server開啟SSL,才能實現(xiàn)HTTP/HTTPS同時支持.為了解決這一問題,為listen指令添加了ssl參數(shù).因此在0.7.14和之后的版本中,ssl指令不能再用了.
基于名稱的HTTPS服務(wù)
一個很普遍的問題出現(xiàn)了,那就是解決當(dāng)在一個ip地址配置監(jiān)聽兩個或多個HTTPS服務(wù).
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate www.example.com.crt;
...
}
server {
listen 443 ssl;
server_name www.example.org;
ssl_certificate www.example.org.crt;
...
}
使用這個配置,瀏覽器只能接收到默認(rèn)的證書,在這個例子中就是www.example.com證書.這個是因為SSL協(xié)議本身造成的.SSL的連接是在瀏覽器發(fā)送HTTP請求之前建立的,因此nginx不知道請求的名稱.所以它只能提供默認(rèn)服務(wù)的證書.
解決這一問題最好的方式是分配不同的IP地址給每一個HTTPS服務(wù)
server {
listen 192.168.1.1:443 ssl;
server_name www.example.com;
ssl_certificate www.example.com.crt;
...
}
server {
listen 192.168.1.2:443 ssl;
server_name www.example.org;
ssl_certificate www.example.org.crt;
...
}
使用多個名稱生成SSL證書
這里有其他的方式解決上面的問題,但是每一種都有各自的缺點.一種方式是生成證書的時候更改SubjectAltName字段,比如: www.example.com 和 www.example.org 兩個,但是這個字段有長度限制.
另一種方式是證書名稱那里使用通配符,比如: *.example.org,但是 通配符名稱只能用在一級子域名上.這個名稱可以匹配www.example.org ,但是不能匹配example.org或 www.sub.example.org
這兩種方式可以結(jié)合起來,在SubjectAltName字段里填上 example.org 和 *.example.org
最好把多域名證書和私鑰放在配置http塊中,這樣所有的服務(wù)都可以繼承這個配置
ssl_certificate common.crt;
ssl_certificate_key common.key;
server {
listen 443 ssl;
server_name www.example.com;
...
}
server {
listen 443 ssl;
server_name www.example.org;
...
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Linux centos7環(huán)境下tomcat安裝教程
這篇文章主要為大家詳細(xì)介紹了Linux centos7環(huán)境下tomcat的安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03
Linux常用查看硬件設(shè)備信息命令大全(值得收藏)
本文是小編收藏整理的關(guān)于linux查看硬件設(shè)備信息的命名,非常不錯,值得收藏,需要的朋友參考下吧2016-12-12
Jexus 5.8.2正式發(fā)布! 為Asp.Net Core生產(chǎn)環(huán)境提供平臺支持
Jexus 5.8.2正式發(fā)布!Jexus支持ASP.NET、PHP為特色的集高安全性和高性能為一體的WEB服務(wù)器和反向代理服務(wù)器,感興趣的小伙伴們可以參考一下2017-06-06

