OpenSSL两句话生成自签名证书
今天需要生成一个自签名证书,记录下。
需求
今天,我需要给微服务统一添加一个自签名证书,按照最简单的方式生成了一个证书。不过现在这个证书在验证时会报No subject alternative names present
错误,虽然可以通过代码绕过,但是正式环境不太推荐,所以还是在创建证书的环节解决。
我们查看一个一般的网站证书,可以看到现在的证书都有使用者可选名称,而使用 OpenSSL 的默认参数生成的自签名证书是没有这一条的,而 SSL 验证较为严格的地方就会报上面的错误。
两句话生成自签名证书
-
先用 openssl req 生成证书请求,会顺带生成私钥。接下来会输入一系列信息,
Common Name
为必填参数。1
openssl req -nodes -new -keyout server.key -out server.csr
-nodes
, 密钥文件不加密。不加此参数会要求 “Enter PEM pass phrase:”-keyout
,密钥生成路径-out
,证书请求文件生成路径
-
生成自签名证书,带上 SAN 扩展信息
1
2
3openssl x509 -req -sha256 -days 3650 -in server.csr \
-signkey server.key -out server.crt \
-extfile <(printf "subjectAltName=DNS:localhost,DNS:example.com,IP:192.168.1.1,IP:127.0.0.1")-sha256
,使用的加密方法-days
,证书有效期-in
,证书请求文件路径-signkey
,用于提供自签名时的私钥文件-out
,证书生成路径-extfile
,指定签名时包含要添加到证书中的扩展项的文件,自签名时候可以这样使用