现今互联网的快速发展和广泛应用,使得网络安全问题备受关注。为了确保通信的安全性,使用SSL/TLS证书成为了一种必要的手段。而为了支持多个域名的安全通信,使用带有Subject Alternative Name(SAN,主体备用名称)的CSR能够满足不同域名的需求。在Linux系统上,可以利用openssl工具来生成和签名CSR(证书签名请求)。
生成CSR
首先,在Linux终端中输入以下命令来生成私钥和CSR:
openssl req -newkey rsa:2048 -nodes -keyout private.key -out csr.csr
上述命令中,-newkey
选项用于生成一个新的私钥,rsa:2048
指定生成的私钥类型为RSA,长度为2048位。-nodes
选项表示不对私钥进行加密,以便在使用时不需要输入密码。-keyout
选项后指定私钥文件路径和名称,-out
选项后指定CSR文件路径和名称。
接着,在生成CSR的过程中,会要求输入一些信息,包括Common Name(通用名称)和SAN(主体备用名称)。其中Common Name是该证书所关联的主域名,而SAN则是该证书所关联的额外域名列表。多个域名之间使用逗号分隔。填写完必要信息后,会在指定路径下生成私钥文件和CSR文件。
生成CA证书
要使用CA证书签名CSR,首先需要生成自己的CA证书。执行以下命令生成CA证书:
openssl req -newkey rsa:2048 -nodes -keyout ca.key -x509 -days 365 -out ca.crt
上述命令中,-newkey
选项同样用于生成一个新的私钥,rsa:2048
指定生成的私钥类型为RSA,长度为2048位。-nodes
选项表示不对私钥进行加密。-keyout
选项后指定私钥文件路径和名称。
-x509
参数用于生成自签名的X.509证书。-days
选项用于指定证书有效期,这里设置为365天。-out
选项后指定CA证书文件路径和名称。
使用CA证书签名CSR
生成CA证书后,可以使用以下命令来使用CA证书签名CSR:
openssl x509 -req -CA ca.crt -CAkey ca.key -in csr.csr -out signed.crt -days 365 -CAcreateserial -extfile <(printf "subjectAltName=DNS:example1.com,DNS:example2.com,DNS:example3.com")
上述命令中,-req
选项表示将CSR文件用作请求。-CA
和-CAkey
选项分别用于指定CA证书文件和对应的私钥文件。
-out
选项后指定签名后的证书文件路径和名称。-days
选项同样用于指定证书有效期。-CAcreateserial
选项在生成带有SAN的证书时需要用到,它会在当前目录下生成一个序列号文件,用于唯一标识每个创建的证书。
-extfile
选项用于指定扩展配置文件的路径和名称。在该文件中,通过subjectAltName
参数来指定需要包含的SAN列表。
将私钥和签名后的证书合并
在使用签名后的证书时,还需要将私钥和签名后的证书进行合并:
cat private.key signed.crt > combined.crt
上述命令中,通过cat
命令将私钥和签名后的证书合并,输出到一个新的合并文件中。
配置服务器使用证书
最后,将生成的合并证书文件combined.crt
和私钥文件private.key
配置到服务器中:
例如,在Nginx服务器上,可以进行如下配置:
server {
listen 443 ssl;
server_name example1.com;
ssl_certificate /path/to/combined.crt;
ssl_certificate_key /path/to/private.key;
...
}
总结
通过上述步骤,我们可以在Linux系统上使用openssl工具生成带有SAN的CSR,并使用CA证书对其进行签名。使用带有SAN的证书能够满足多个域名的安全通信需求,增强网络安全性。当然,在配置服务器时,请根据实际情况进行相应的调整。
如果遇到任何问题,可以参考openssl的官方文档或寻求专业人士的帮助,以确保证书的正确配置和使用。
希望本文能够对你在Linux系统上生成和签名CSR提供帮助,并能够提高网络通信的安全性!
参考链接:
本文来自极简博客,作者:北极星光,转载请注明原文链接:Linux(openssl):用CA证书签名具有SAN的CSR