使用OpenSSL生成自签名证书
在部署HTTPS站点的时候,一个必不可少的步骤是申请证书。对于内网程序来说,申请证书有的时候并不方便,此时也可以通过自签名的方式自己签发证书。虽然这种证书浏览器认为不方便,但还是能享受到加密防护和http2带来的好处的。本文这里主要介绍下如何使用OpenSSL自签名证书。
下载OpenSSL
对于Windows来说,网上有已经打包了的二进制文件下载,只是自签名证书话,下载这个只有几兆的安装包即可。
另外,大部分Windows开发人员都是安装了Git For Windows的,此时在C:\Program Files\Git\mingw64\bin目录下也是有一个已经编译了的OpenSSL的,直接用这个更加方便。
生成证书
如下是一个生成证书的简单示例
openssl req -newkey rsa:2048 -nodes -keyout d:\key.pem -x509 -days 365 -out d:\certificate.pem
它主要包括了证书的输出位置和有效时间, 执行命令后,并不会立即生成证书,而是会在交互模式下继续提示输入一些信息,主要是证书的一些基本信息,如下所示:
Generating a RSA private key |
信息输入完后就会生成证书文件,证书文件都是文本文件,可以通过记事本查看。其中key.pem是私钥,需要保护好,而certificate.pem则是证书相关的一些信息,可以通过openssl命令查看
openssl x509 -noout -text -in certificate.pem
转换为pfx格式
在.net core程序部署的时候,往往采用的是pfx格式的证书,pfx文件将证书和私钥打包在一起,并通过一个密钥来保护私钥,这样可以比较方便的保护私钥,也简化了部署。
我们也可以通过open ssl命令将刚才生成的证书转换为pfx格式,转换过程中会提示输入密码。
openssl pkcs12 -export -out d:\ca.pfx -inkey d:\key.pem -in d:\certificate.pem
我们从第三发签发机构签发的证书也可以用这种方式转换为pfx格式。