1. 程式人生 > 實用技巧 >搭建本地 HTTPS 環境

搭建本地 HTTPS 環境

前言

之前寫自己的網站時, 申請過免費的https證書. 最近想在自己本地搭一個, 結果忘了當初證書是怎麼來的了. 本來想著去申請個免費的證書, 但想了想, 我只需要在自己本地能使用就行了, 我自己的環境, 那當然是我說了算了. 只要能夠將證書構造出來, 安裝到本地就可以識別了. 搜了搜, 發現還真的有生成證書的工具. 道理咱都懂, 動手才是王道, 走你.

證書生成

以下以我自己的域名hujingnb.cn為例.

隨便找個路徑, 建立 hujingnb.conf配置檔案, 內容如下(內容加了註釋, 請自行將註釋刪掉):

[ req ]
 
default_bits = 2048
default_keyfile = server-key.pem
// 標識提示的標籤名, 就是下面的 [subject]
distinguished_name = subject
// 指定擴充套件的標籤名
req_extensions = req_ext
x509_extensions = x509_ext
// 指定編碼
string_mask = utf8only
 
[ subject ]
// 以下為填寫的相關資訊 
countryName = 國家(跳過即可)
countryName_default = CH
 
stateOrProvinceName = 省份(跳過即可)
stateOrProvinceName_default = BeiJing
 
localityName = 城市(跳過即可)
localityName_default = BeiJing
 
organizationName = 組織(跳過即可)
organizationName_default = None
 
commonName = 域名(必填)
commonName_default = hujingnb.cn
 
emailAddress = 郵箱(跳過即可)
emailAddress_default = [email protected]
 
[ x509_ext ]
 
// 使用者金鑰標識
subjectKeyIdentifier = hash
// 授權金鑰標識
authorityKeyIdentifier = keyid,issuer

// 表示要生成的證書是用於終端證書的, TRUE 為 CA 證書, 可下發二級證書 
basicConstraints = CA:FALSE
// 指明證書用途
keyUsage = digitalSignature, keyEncipherment
// 標明當前證書使用與哪些域名, 在下面的 alternate_names 標籤中
subjectAltName = @alternate_names
// 證書提交說明
nsComment = "generate crt"
 
[ req_ext ]
 
subjectKeyIdentifier = hash
 
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
subjectAltName = @alternate_names
nsComment = "generate crt"
 
[ alternate_names ]
// 證書可使用的域名列表
DNS.1 = hujingnb.cn
DNS.2 = *.hujingnb.cn

// 還有寫其他的引數, 可檢視 openssl.cnf 配置檔案

然後執行命令:

openssl req -config hujingnb.conf -new -sha256 -newkey rsa:2048 -nodes -keyout hujingnb.key -x509 -days 365 -out hujingnb.crt

提示需要輸入一堆引數, 都可以不給. 但是, Common Name 需要指定域名

對以上用到的引數簡單解釋:

  • config: 指明配置檔案
  • new: 指明生成新的證書
  • newkey: 生成新的金鑰, 方式為 rsa. 長度為2048
  • nodes: 指定金鑰不用加密(沒懂是什麼意思, 但是不指定不能生成證書).
  • keyout: 私鑰輸出檔案
  • days: 標明證書有效期
  • X509: 表示輸出證書的格式, 這個我們在配置檔案中配過了. (預設是 crt 格式, 我試了, 不加這個引數也 OK)
  • out: 證書輸出檔案

生成證書檔案以及私鑰.

然後將證書以及私鑰 copy 到你想要的任意位置,

證書安裝

雙擊crt證書檔案.

雙擊證書, 將證書設定為始終信任. 然後 X 調, 輸入密碼, 確認修改. 證書安裝完成.

修改 nginx 配置

OK, 證書的準備工作已經完成了, 現在剩下 nginx 的配置了. 將以下配置加到 nginx 配置檔案中:

listen 443 ssl;
server_name  hujingnb.cn;

ssl on;
ssl_certificate     /Users/hujing/dir/pem/hujingnb.crt;
ssl_certificate_key /Users/hujing/dir/pem/hujingnb.key;

請自行修改其中證書以及私鑰的檔案位置.

萬事具備, 試驗:

OK, 完美.

總結

不過這樣安裝, 只能在本地環境訪問, 僅供測試使用.

對於在本地環境搭建HTTPS的開發來說, 不用費時費力的申請線上證書, 可模擬線上HTTPS請求. 足矣.