如何在本地看到https的绿锁——建立自签名CA以及如何给自己发SSL证书
最近编写和调试了许多HTTPS的网站,可是本地测试的时候浏览器里的https上总是变成红色,然后打着一个巨大的斜线。那么如何在本地调试的过程中让本地HTTPS在浏览器里显示出绿锁呢?
我们需要一个自签名CA,然后用这个自签名CA给自己签证书。
嗯。。。。。。。。。。。。。。
在说怎么做之前,我们先来看一下服务器如何生成证书请求文件。
假设大家都已经装好了openssl。
首先建立一个RSA密钥:
openssl genrsa -out server.key 2048
然后生成证书请求文件:
openssl req -new -out server.req -key server.key -subj "/C=CN/ST=Shanghai/L=Pudong/O=Namido/CN=127.0.0.1"
其中subj的每一项都由/开头。CN的值就是希望申请可用的域名了。
当然,-subj
可以省略,这样就会进入交互模式,按照提示输入内容即可。
这两步做完之后,当前目录里面应该已经生成了server.key和server.req两个文件,其中.key
就是我们的服务器私钥,.req
是证书请求文件,如果是正常的申请步骤,下面就是把这个server.req文件拿给CA去签证书。
当然,我们今天是自己来做一个CA。
再来建立一个RSA密钥:
openssl genrsa -out ca.key 2048
这个RSA密钥用作CA的私钥,一会CA用这个私钥来签证书。
首先先给自己签名一个根证书。
openssl req -new -x509 -days 1000 -key ca.key -out ca.crt -sha256\
-subj "/C=CN/ST=Shanghai/L=Pudong/O=Namido/CN=Namido CA"
注意此处subj的CN值,填的是CA的名字。
然后注意-sha256
选项,必须加上这个选项才能使用sha256做证书加密。默认是用sha1加密的,而sha1现在已经不够安全了。
有了这个根证书以后,下面开始给前面我们生成的服务器证书请求文件签发证书。
openssl x509 -req -in server.req -out server.crt -CAkey ca.key -CA ca.crt -days 1000 -sha256\
-CAcreateserial -CAserial server.serial
成功运行后,目录中会生成server.crt。这就是由我们刚才自签名的CA生成的证书了。
接下来把ca.crt、server.crt、server.key复制到HTTPS服务器上,并设置server.crt为服务器证书,server.key为服务器私钥文件。因为我们上级证书就是根证书了。所以把证书链文件直接设置成ca.crt。同时把ca.crt复制到本地。
双击下载下来的ca.crt,打开证书导入向导,将此证书加入“受信任的根证书颁发机构”即可。
做完了这么多,重启Web服务器,然后再输入https://127.0.0.1
。终于看到萌萌的小绿锁了。