国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 服務器 > Linux服務器 > 正文

PHP程序員玩轉Linux系列 Nginx中的HTTPS詳解

2024-09-05 23:03:45
字體:
來源:轉載
供稿:網友

 

創建一個HTTPS服務器

在nginx.conf配置文件中,在server塊里面通過listen指令指定ssl的參數,設置好服務器證書和私鑰文件的路徑

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; ...}

服務器證書是一個公開實體,它會被發送給每一個連接過來的客戶端.私鑰是一個安全實體,它應該被存儲在一個限制權限的文件中.但是nginx的master進程必須能夠讀到該私鑰文件. 私鑰也可以和證書放在一個文件里面.

ssl_certificate www.example.com.cert;ssl_certificate_key www.example.com.cert;

在這個例子里面,文件的訪問權限應該被限制.盡管證書和私鑰在一個文件里面,只有證書會被發送給客戶端.

ssl_protocolsssl_ciphers 指令可以被用來限制連接,只包含高版本的TLS和SSL/TLS的密碼

從nginx 1.0.5版本開始,nginx默認使用ssl_protocols SSLv3 TLSv1ssl_ciphers HIGH:!aNULL:!MD5.從nginx 1.1.13 和 1.0.12 版本開始,默認更新成了 ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2 

一個單一的HTTP和HTTPS服務

可以配置一個服務同時支持HTTP和HTTPS請求, 在虛擬主機中使用listen指令,一個帶著ssl參數,一個不帶參數.

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不能被單獨設置監聽socket.只能通過ssl指令為全部server開啟SSL,才能實現HTTP/HTTPS同時支持.為了解決這一問題,為listen指令添加了ssl參數.因此在0.7.14和之后的版本中,ssl指令不能再用了.  

基于名稱的HTTPS服務

一個很普遍的問題出現了,那就是解決當在一個ip地址配置監聽兩個或多個HTTPS服務.

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; ...}

使用這個配置,瀏覽器只能接收到默認的證書,在這個例子中就是www.example.com證書.這個是因為SSL協議本身造成的.SSL的連接是在瀏覽器發送HTTP請求之前建立的,因此nginx不知道請求的名稱.所以它只能提供默認服務的證書.

解決這一問題最好的方式是分配不同的IP地址給每一個HTTPS服務

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.orgwww.sub.example.org

這兩種方式可以結合起來,在SubjectAltName字段里填上 example.org *.example.org

最好把多域名證書和私鑰放在配置http塊中,這樣所有的服務都可以繼承這個配置

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; ...}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 榕江县| 大余县| 天长市| 原阳县| 辉县市| 二手房| 齐河县| 呼图壁县| 信阳市| 革吉县| 德州市| 巴彦县| 南漳县| 巢湖市| 邵阳市| 潮安县| 东明县| 兴国县| 财经| 沾化县| 阜康市| 永城市| 绿春县| 济宁市| 杂多县| 庆安县| 紫阳县| 鄂伦春自治旗| 龙泉市| 亚东县| 开远市| 贺兰县| 乌鲁木齐县| 雅安市| 施甸县| 河池市| 喜德县| 三门峡市| 上高县| 岑巩县| 吴江市|