前言
之前寫自己的網(wǎng)站時, 申請過免費的https證書. 最近想在自己本地搭一個, 結(jié)果忘了當(dāng)初證書是怎么來的了. 本來想著去申請個免費的證書, 但想了想, 我只需要在自己本地能使用就行了, 我自己的環(huán)境, 那當(dāng)然是我說了算了. 只要能夠?qū)⒆C書構(gòu)造出來, 安裝到本地就可以識別了. 搜了搜, 發(fā)現(xiàn)還真的有生成證書的工具. 道理咱都懂, 動手才是王道, 走你.
證書生成
以下以我自己的域名hujingnb.cn為例.
隨便找個路徑, 創(chuàng)建 hujingnb.conf配置文件, 內(nèi)容如下(內(nèi)容加了注釋, 請自行將注釋刪掉):
[ req ]
default_bits = 2048
default_keyfile = server-key.pem
// 標(biāo)識提示的標(biāo)簽名, 就是下面的 [subject]
distinguished_name = subject
// 指定擴展的標(biāo)簽名
req_extensions = req_ext
x509_extensions = x509_ext
// 指定編碼
string_mask = utf8only
[ subject ]
// 以下為填寫的相關(guān)信息
countryName = 國家(跳過即可)
countryName_default = CH
stateOrProvinceName = 省份(跳過即可)
stateOrProvinceName_default = BeiJing
localityName = 城市(跳過即可)
localityName_default = BeiJing
organizationName = 組織(跳過即可)
organizationName_default = None
commonName = 域名(必填)
commonName_default = hujingnb.cn
emailAddress = 郵箱(跳過即可)
emailAddress_default = hujingnb@qq.com
[ x509_ext ]
// 使用者密鑰標(biāo)識
subjectKeyIdentifier = hash
// 授權(quán)密鑰標(biāo)識
authorityKeyIdentifier = keyid,issuer
// 表示要生成的證書是用于終端證書的, TRUE 為 CA 證書, 可下發(fā)二級證書
basicConstraints = CA:FALSE
// 指明證書用途
keyUsage = digitalSignature, keyEncipherment
// 標(biāo)明當(dāng)前證書使用與哪些域名, 在下面的 alternate_names 標(biāo)簽中
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
// 還有寫其他的參數(shù), 可查看 openssl.cnf 配置文件
然后執(zhí)行命令:
openssl req -config hujingnb.conf -new -sha256 -newkey rsa:2048 -nodes -keyout hujingnb.key -x509 -days 365 -out hujingnb.crt
提示需要輸入一堆參數(shù), 都可以不給. 但是, Common Name 需要指定域名
對以上用到的參數(shù)簡單解釋:
- config: 指明配置文件
- new: 指明生成新的證書
- newkey: 生成新的密鑰, 方式為 rsa. 長度為2048
- nodes: 指定密鑰不用加密(沒懂是什么意思, 但是不指定不能生成證書).
- keyout: 私鑰輸出文件
- days: 標(biāo)明證書有效期
- X509: 表示輸出證書的格式, 這個我們在配置文件中配過了. (默認(rèn)是 crt 格式, 我試了, 不加這個參數(shù)也 OK)
- out: 證書輸出文件
生成證書文件以及私鑰.
然后將證書以及私鑰 copy 到你想要的任意位置,
證書安裝
雙擊crt證書文件.
雙擊證書, 將證書設(shè)置為始終信任. 然后 X 調(diào), 輸入密碼, 確認(rèn)修改. 證書安裝完成.
修改 Nginx 配置
OK, 證書的準(zhǔn)備工作已經(jīng)完成了, 現(xiàn)在剩下 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, 完美.
總結(jié)
不過這樣安裝, 只能在本地環(huán)境訪問, 僅供測試使用.
對于在本地環(huán)境搭建HTTPS的開發(fā)來說, 不用費時費力的申請線上證書, 可模擬線上HTTPS請求. 足矣.