在本指南中,我们提供了有关如何使用OpenSSL实用程序创建自签名证书的分步指南。您可以按照本指南使用命令创建自签名证书或使用shell脚本自动创建自签名证书。
自签名证书是未经公共或私有证书颁发机构签名的SSL/TSL证书。相反,它由创建者自己的个人或根CA证书进行签名。
以下是我们向Verisign或comodo等知名证书颁发机构请求付费SSL/TLS证书的操作。
但对于自签名证书,这就是我们所做的。
大多数浏览器和操作系统都保存所有受信任的认证机构的根CA证书的副本。这就是当您访问使用来自受信任且知名的商业证书颁发机构的SSL的标准网站时,浏览器不会显示任何安全消息的原因。
下图显示了Firefox浏览器中默认存在的根CA。
同时,如果您使用自签名证书,您的浏览器将抛出安全警告。原因是浏览器仅信任来自受信任证书颁发机构的SSL。例如,
YourconnectionisnotprivateAttackersmightbetryingtostealyourinformationfromdemo.apps.mlopshub.com(forexample,passwords,messagesorcreditcards)但您可以强制浏览器和操作系统接受我们自己的证书颁发机构。因此,安装CA证书并将其添加到受信任列表后,您将不会看到安全警告。您还可以与您的开发团队共享CA证书,以便在他们的浏览器中安装。
此外,您还可以使用此CA创建多个SSL证书。
如前所述,我们需要创建自己的根CA证书,以便浏览器信任自签名证书。因此,我们首先创建根CA证书。
让我们创建一个名为的目录openssl来保存所有生成的密钥和证书。
mkdiropenssl&&cdopenssl执行以下openssl命令来创建rootCA.key和rootCA.crt。替换demo.mlopshub.com为您的域名或IP地址。
opensslreq-x509-sha256-days356-nodes-newkeyrsa:2048-subj"/CN=demo.mlopshub.com/C=US/L=SanFransisco"-keyoutrootCA.key-outrootCA.crt我们将使用rootCA.key和rootCA.crt来签署SSL证书。
注意:如果出现以下错误,请注释RANDFILE=$ENV::HOME/.rnd行/etc/ssl/openssl.cnf
Can'tload/home/vagrant/.rndintoRNG使用OpenSSL创建自签名证书按照下面给出的步骤创建自签名证书。我们将使用在上一步中创建的我们自己的根CA注销证书。
opensslgenrsa-outserver.key20482.创建证书签名请求配置我们将创建一个csr.conf文件来包含生成CSR的所有信息。替换demo.mlopshub.com为您的域名或IP地址。
cat>csr.conf<3.使用服务器私钥生成证书签名请求(CSR)现在我们将server.csr使用以下命令生成。
opensslreq-new-keyserver.key-outserver.csr-configcsr.conf现在我们的文件夹应该有三个文件。csr.conf,server.csr和server.key
执行以下命令来创建cert.confSSL证书。替换demo.mlopshub.com为您的域名或IP地址。
cat>cert.conf<5.使用自签名CA生成SSL证书现在,执行以下命令来生成由我们自己的证书颁发机构签名rootCA.crt并创建的SSL证书。rootCA.key
opensslx509-req-inserver.csr-CArootCA.crt-CAkeyrootCA.key-CAcreateserial-outserver.crt-days365-sha256-extfilecert.conf上面的命令将生成将server.crt与我们一起使用的命令,server.key以在应用程序中启用SSL。
server{listen443;sslon;ssl_certificate/etc/ssl/server.crt
;ssl_certificate_key/etc/ssl/server.key
;server_nameyour.domain.com;access_log/var/log/nginx/nginx.vhost.access.log;error_log/var/log/nginx/nginx.vhost.error.log;location/{root/home/www/public_html/your.domain.com/public/;indexindex.html;}}在您的浏览器/操作系统中安装证书颁发机构您需要rootCA.crt在浏览器或操作系统中安装,以避免使用自签名证书时浏览器中显示安全消息。
安装自签名CA证书因操作系统而异。例如,在MAC中,您可以通过双击证书并将其添加到钥匙串来添加证书。检查有关安装证书的相应操作系统指南。
如果您想经常创建自签名证书,可以使用以下shell脚本。您只需使用要添加到证书的域名或IP来执行脚本即可。
将以下shell脚本保存为ssl.sh
#!/bin/bashif["$#"-ne1]thenecho"Error:Nodomainnameargumentprovided"echo"Usage:Provideadomainnameasanargument"exit1fiDOMAIN=$1#CreaterootCA&Privatekeyopensslreq-x509-sha256-days356-nodes-newkeyrsa:2048-subj"/CN=${DOMAIN}/C=US/L=SanFransisco"-keyoutrootCA.key-outrootCA.crt#GeneratePrivatekeyopensslgenrsa-out${DOMAIN}.key2048#Createcsfconfcat>csr.conf chmodxssl.sh使用域名或IP执行脚本。例如, ./ssl.shdemo.mlopshub.com该脚本将创建我们使用individualcommands.SSL证书和私钥以您作为脚本参数传递的域名命名。例如,demo.mlopshub.com.key&demo.mlopshub.com.crt 使用自签名证书有几个好处: 使用自签名证书也有几个缺点: 一般来说,对于需要证明自己身份的应用程序来说,自签名证书是一个不错的选择。它们也是开发和测试环境的不错选择。但是,它们不应该用于生产应用程序。 许多组织对其不面向互联网的内部应用程序使用自签名证书。这些证书是使用组织的内部PKI基础设施生成的。 您可以使用Openssl在Windows上创建自签名证书。OpenSSL命令对于所有操作系统都是相同的。您可以按照本指南在Windows上使用本指南创建自签名证书。 您可以使用openSSL或CDSSLPKI工具包等工具生成自签名证书。 在本指南中,我们学习了如何使用OpenSSL创建自签名SSL证书。 希望这份自签名SSL指南对自动生成证书的脚本有所帮助。如果您遇到任何问题,请告诉我们。