一切的开始
为什么会写下这篇blog呢?才不是因为好久没写blog想写点什么呢
因为我想给我的Nginx小工具加点功能,至于为什么要用到证书呢…这个就不深入说了。
需要准备的东西
首先,你需要一个openssl,下载安装后如果输入指令没反应请尝试重启电脑/添加环境变量这样的基本操作,当然直接使用OpenSSL Command Prompt也是不错的选择。
然后,你需要一个趁手的文本编辑器,这里推荐的是VSCode和Notepad++。
一切就绪后,弄一个空文件夹,然后找到openssl安装目录,把bin\cnf
里面的样板cnf拷贝出来,也就是openssl.cnf
那么开始吧
修改.cnf
首先,你需要修改刚刚拷贝过来的openssl.cnf
在[ req ]
里增加req_extensions = v3_req
把[ req_distinguished_name ]
下所有代有0.
开头的0.
去掉
在[ v3_req ]
里新增subjectAltName = @alt_names
在[ CA_default ]
和[ tsa_config1 ]
里的dir
一栏,把里面的示例路径换成你新建文件夹的路径
虽然不知道有没有影响但是非常不建议用中文路径
然后就是重点了,要生成包含多域名的证书,在cnf底部加上[ alt_names ]
1 | [ alt_names ] |
这样就设置好了,注意,域名可以跟Nginx里一样像*. example.com
写。
进入证书生成步骤
注意,本节的指令均在新建的文件夹里运行
生成必须文件
在文件夹里新建一个名为index的文本文档index.txt
在文件夹里新建一个名为serial的文件serial
,并且里面要有ANSI编码的00
注意:
- 如果是在windows10环境下使用
echo 00 > serial
来创建serial文件的,默认编码不是ANSI所以会导致后面报错
生成ca证书和密钥
1 | openssl genrsa 2048 > ca.key |
注意:
- 这一步会要求设置密码,如果密码过短会报错。
使用ca证书生成server证书和签名请求
1 | openssl genrsa -out server.key 2048 |
注意:
- 这一步的
Common Name
请写上[ alt_names ]
里的其中一个域名,(server)的名字不重要,这里也可以改成你想要的其他名字
签署server.crt
1 | openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -extensions v3_req -config openssl.cnf |
这里会要求输入你生成ca的时候设置的密码。一路y下去之后就完成了。
Nginx的一些设置
把你生成好的证书和密钥放进nginx的conf/
文件夹里,当然这里建议单独建立一个文件夹来存放证书,然后就可以通过修改nginx.conf
来愉快的使用https了。
1 | ssl on; |
结束了
为了方便,也可以把签署的指令写在批处理文件里,比如这样
1 | @echo off |
这样修改完openssl.cnf
后,就可以很方便的签署证书了。
参考资料
https://blog.51cto.com/colinzhouyj/1566438