1. 程式人生 > >Nginx 配置 HTTPS自簽名證書

Nginx 配置 HTTPS自簽名證書

sta num web oca pos sof AI bsp OS

工具:OpenSSL ssl的開源實現,幾乎實現了市面上所有的加密libcrypto: 通用加密庫, 任何軟件要實現加密功能 鏈接調用這個庫libssl: TLS/SSL 加密庫 openssl: 命令行工具 多功能多用途工具 實現私有證書頒發機構子命令:genrsa [-out filename] [-passout arg] [numbits]generate an RSA private key 生成一個 RSA 的私鑰 (公鑰是從私鑰中提取的,有了私鑰 就有公鑰)openssl rsa -in ca.key -pubout 提取私鑰創建證書的基本流程是這樣:
  • 生成自己的服務端私鑰 Server Key
  • 輸入基本信息並用私鑰簽名生成CSR 證書簽名請求
  • 提交CSR給證書機構CA(免費或商業證書)簽名生成CRT,或自己做CA簽名生成CRT(自簽名證書)
生成RSA服務器私鑰:openssl genrsa -out server.key 4096 輸出的server.key文件就是服務器私鑰,4096是密鑰長度,要求不高的話用2048也可。生成CSR:執行命令 openssl req -new -nodes -sha256 -newkey rsa:2048 -keyout myprivate.key -out mydomain.csr生成 CSR 文件。其中,
  • -new 指定生成一個新的CSR。
  • -nodes 指定私鑰文件不被加密。
  • -sha256 指定摘要算法。
  • -keyout 生成私鑰文件。
  • -newkey rsa:2048 指定私鑰類型和長度。
因為sha1已經不安全,所以這裏用了sha256,可能太舊的客戶端(比如win98?)會不支持。yoursite.csr就是生成的CSR,yoursite建議用你的網站名標識會比較方便識別。然後按提示輸入:
  • 國家
  • 公司
  • 部門
  • 通用名(即網站域名,這個必須準確,有些商業證書支持在這裏用帶www的域名後簽發出同時支持不帶www的域名)
  • email
  • 密碼(可選,設置的話以後重啟webserver都需要輸入密碼)
自簽名證書做法1.先生成一對秘鑰,把公鑰做成證書 ca.keyopenssl genrsa -out ca.key 2048 生成一個 2048 位的 私鑰我們可以 輸出它的公鑰看看 openssl rsa -in ca.key -pubout
2. 生成證書CRT server.crtopenssl req -new -x509 -key ca.key -out server.crt -days 365國家 Country Name: CN 省 Stat or Province Name Shanghai市 Locality Name Shanghai公司 Organization Name : HUPU部門 Organizational Unit Tech主機名 Common Name www.zmz8.com郵件 Email Address [email protected]我們可以查看證書內容 openssl x509 -text -in server.crt3.配置nginx證書路徑 /usr/local/nginx/private_ca/server.crt私鑰路徑 /usr/local/nginx/private_ca/ca.keynginx添加配置server { listen 443; server_name www.zmz8.com; ssl on; ssl_certificate ../private_ca/server.crt; ssl_certificate_key ../private_ca/ca.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2;}最後如果可以的話 ,可以配置一個服務器簽署openssl req -new -out server.csr -key server.key -config /etc/pki/tls/openssl.cnf 商業證書生成首先找一個商業證書機構(CA)或其代理商下一個證書訂單。其次是選擇證書類型。證書類型商業證書有很多類型,也有很多的CA可以選擇,不同的CA,不同的類型價格也不一樣。常見的CA有:
  • VeriSign(Symantec)
  • GeoTrust(RapidSSL)
  • Comodo
  • ……
以上以價格從高到低排序。除此之外當然還有很多,具體可以打開你的系統證書列表看看。需要特別說一句的就是:臭名昭著的CNNIC和沃通(WoSign,包括免費的StartSSL),已經被證明不安全,建議將它們從系統中刪除,並且不要去申請使用它們的證書。常見的證書類型有三種:
  • DV(域名驗證)
  • OV(組織驗證)
  • EV(擴展驗證)
驗證級別從低到高排序,價格也是如此。DV證書只驗證域名,在最終訪問者那邊查看證書時將不會包含CSR中的組織信息,只有域名信息,也就是說你就算是在CSR裏輸入你是GOOGLE,到了客戶端那裏也是看不到的。OV證書除了驗證域名還需要驗證組織,即你需要提供證據證明你在CSR裏輸入的公司或組織的確是你, 這樣才能在客戶端證書裏查看到你的組織信息。EV證書就要求更高了,通常是金融機構之類的用。除此之外,證書還有一種區別:
  • 單域名證書
  • 多域名證書
  • 泛域名證書
一樣是價格從高到低排序。單域名證書就是只能用於一個域名的證書,某些商業證書可以提供兩個域名:帶WWW的和不帶WWW的。多域名證書就是一個證書可以用於多個域名,默認支持三個域名,當然增加域名需要加錢,但比單獨買單域名證書要便宜。適用於一個公司有多個域名,而且多個域名部署在一個服務器上,使用一個證書會比較省事,也比較便宜。泛域名證書就是一個證書可以用於一個域名下的任意多個子域名。申請流程一般申請流程(僅指DV類型)如下:
  • 選擇CA或代理商
  • 選擇證書類型
  • 選擇有效期(以年為單位,一般時間越長單價越便宜)
  • 下單付款
  • 成交後按服務商的郵件或文檔開始驗證域名(以下為一種流程,不同服務商可能不太一樣)
  • 上傳CSR(或用服務商提供的工具生成,但不推薦)
  • 選擇驗證方式(EMAIL,文件,DNS等)
  • 按相應方式操作
  • 等待驗證
  • 取得證書(郵件或從服務商處自行下載)
其中各驗證方式大致如下:
  • Email:證書機構向域名註冊郵箱或域名的webmaster等郵箱(可選)發送驗證郵件
  • 文件:在域名的指定路徑下放驗證文件供證書機構訪問
  • DNS:創建指定的DNS TXT記錄供證書機構驗證
通過驗證後即可獲得證書。證書內容一般包括:域名的CRT,證書機構的CRT鏈(可能有多個),根證書CRT(CA的證書),如果用服務商的工具生成CSR,還應該會有CSR和KEY。

Nginx 配置 HTTPS自簽名證書