江邊望海的技術人生
分享真知
让你的本地开发环境也支持https

不知不覺現在的很多網站都支持 HTTPS 了,啟用HTTPS不僅可以保護用戶的隱私而且還有利於搜索引擎的排名。谷歌就明確表示會給帶有HTTPS的網站更高的權重。

不僅如此,開啟綠鎖也是一件很酷的事情。通常,我們只會在線上的生產環境部署HTTPS而忽視了本地的開發環境。但是對於有強迫的開發者來說,這點兒真的不能忍,開著沒有綠鎖的站就提不起興致。

何不讓自己的開發環境也開啟HTTPS呢?

本地開發環境啟用HTTPS其實並不是很難,下面是在Mac系統驗證通過的方法。

我的本地開發環境是使用visualbox創建的虛擬機,安裝的是centos7系統。

步驟如下:

1.生成密钥

生成一个RSA-2048密钥并保存到一个文件rootCA.key。该文件将被用作生成根SSL证书的密钥。系统将提示您输入密码,每次使用此特定密钥生成证书时都需要输入该密码。

openssl genrsa -des3 -out rootCA.key 2048

2.生成证书

您可以使用您生成的密钥来创建新的根SSL证书。并将其保存为rootCA.pem。这个证书将有1,024天的有效期。你可以随意将其更改为任何您想要的天数。在这一过程中,你还将被提示输入其他可选信息。

openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem

3.让mac信任证书

从开发机中下载生成的证书到mac,双击添加到系统钥匙串中(如下图)。设置始终信任这个证书。

最终效果

4.创建域证书密钥

创建一个新的OpenSSL配置文件,server.csr.cnf以便在创建证书时可以导入这些设置,而不必在命令行上输入它们。

[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn

[dn]
C=US
ST=RandomState
L=RandomCity
O=RandomOrganization
OU=RandomOrganizationUnit
emailAddress=hello@example.com
CN = mcfr.im

创建密钥

openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config <(cat server.csr.cnf)

5.创建域证书

创建一个v3.ext文件,以创建一个X509 v3证书。注意我们指定了subjectAltName选项。

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = api.mcfr.im
DNS.2 = static.mcfr.im

证书签名请求通过我们之前创建的根SSL证书颁发,创建出一个localhost的域名证书。输出是一个名为的证书文件server.crt。

openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 500 -sha256 -extfile v3.ext

6.修改nginx站点配置文件,让证书和密钥生效。

listen 443;
ssl on;
ssl_certificate /root/server.crt;
ssl_certificate_key /root/server.key;
将这上这几行放到站点的配置文件中
server
{
....
}

重启nginx

7.最终效果

最终效果

参考链接:https://juejin.im/post/5a6db896518825732d7fd8e0