使用openssl自签证书
# 首先生成一个私钥
openssl genrsa -out server.key 2048
# 然后使用前面的私钥生成csr(证书签署请求)文件,该过程要求输入相关信息以方便CA机构审核
openssl req -new -key server.key -out server.csr
# 使用证书签署请求文件生成公钥(这一步需要CA机构那边来做的,但也可以自己做,
# 自己做就叫“自签名”,自签名的证书只能自己用,不能被浏览器等认为是合法的)。
openssl req -x509 -in server.csr -key server.key -days 3650 -out server.crt
# 把私钥和公钥放在一起,变成pem格式
cat server.key server.crt > server.pem
# 修改私钥和公钥的权限为0600(一般都是只允许所有者读/写,不允许所有组和其它人读/写)
chmod 0600 server.pem server.key
- genrsa是generate rsa的缩写,表示生成一个使用rsa算法加密的私钥,长度为2048,
-out
用于指定生成的私钥文件名,.key
结尾只是方便让我们人知道它是私钥,其实没有后缀,或随便乱写一个后缀都无所谓,因为它的本质是一个文本文件,可使用man openssl genrsa
来查看帮助; - req是request,表示生成一个证书签署请求文件(CSR, Certificate Signing Request),证书签署请求是申请者发给证书颁发机构(ca, Certificate Authority)的信息文件,用于申请公开密钥证书(简称公钥),当然也可以直接生成证书,可使用
man openssl req
来查看帮助; -new
表示生成一个新的证书签署请求(CSR),-key
(也可写作-signkey
)用于指定要申请的公钥所对应的私钥,如果用-newkey
表示不指定私钥而是顺便生成一个私钥,-out
表示指定保存到哪个文件中;-x509
是一种证书格式,-in
默认表示读取一个证书文件(应该是公钥),但由于它前面有req
,就表示读取一个csr(证书签署请求)文件,-days
用于指定证书有效的天数,
-out`表示指定保存到哪个文件中(.crt是certificate的缩写),;.pem
是Privacy Enhanced Mail的缩写,软件读取pem文件后,会自己区分里面的公钥和私钥,并使用对应的公钥或私钥;- server.pem就是证书,server.key是私钥,比如nginx的
ssl_certificate
就是填server.pem,ssl_certificate_key
则填server.key。
其中生成csr(证书签署请求)文件过程要求输入的信息总共有9个
分别为:
- 1、Country Name,必须用两位字母大写字母表示国家代码(如中国CN、美国US);
- 2、State or Province Name,州或省名;
- 3、Locality Name,地区名(如城市),这个一般填州或省下属的城市名;
- 4、Organization Name,组织名(比如你的组织是一个公司,那就填你的公司名);
- 5、Organization Unit Name,组织单位(比如集团下属公司名,或公司下属部门名,这个字段很容易造成误解,通过投票,已经在2022年09月正式被移除,见这里);
- 6、Common Name,通用名(如服务器的域名,或者你本人的姓名);
- 7、Email Address,电子邮箱;
- 8、[额外字段]A challenge password,证书密码,一般不填;
- 9、[额外字段]An optoinal company name,一个可选的公司名(有些公司有其它简称);
参考:
– 自签名证书和CA证书的区别和制作、使用
– Creating a Secure Encrypted Channel with Socat
觉得文章对你有用的话鼓励一下我吧