搭建本地 HTTPS 環境
阿新 • • 發佈:2020-08-01
前言
之前寫自己的網站時, 申請過免費的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
請求. 足矣.