如何为localhost创建自签名证书?

时间:2011-11-17 15:43:32

标签: iis windows-7 ssl-certificate

我已经完成了How do you use https / SSL on localhost?中详述的步骤,但这为我的机器名设置了一个自签名证书,当通过https://localhost浏览时,我收到了IE警告。

有没有办法为“localhost”创建自签名证书以避免此警告?

11 个答案:

答案 0 :(得分:70)

虽然这篇文章的帖子被标记为Windows,但OS X上的相关问题是我还没有看到其他地方的答案。以下是在 OS X

上为localhost创建自签名证书的步骤
Keychain Access

var options = { key: fs.readFileSync('/path/to/localhost.key').toString(), cert: fs.readFileSync('/path/to/localhost.crt').toString(), ciphers: 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384', honorCipherOrder: true, secureProtocol: 'TLSv1_2_method' }; var server = require('https').createServer(options, app); 中,双击此新的localhost证书。展开“信任”旁边的箭头,然后选择“始终信任”。 Chrome和Safari现在应该信任此证书。例如,如果要将此证书与node.js一起使用:

{{1}}

答案 1 :(得分:44)

在这个问题上花了很多时间后,我发现无论何时我都遵循使用IIS制作自签名证书的建议,我发现Issued To和Issued by不正确。 SelfSSL.exe是解决此问题的关键。以下网站不仅提供了逐步制作自签名证书的方法,而且还解决了问题发布和发布问题。 Here是我发现自签名证书的最佳解决方案。如果您希望以视频形式click here看到相同的教程。

SelfSSL的示例用法如下所示:

SelfSSL /N:CN=YourWebsite.com / V:1000 / S:2

SelfSSL /?将提供参数列表并附上说明。

答案 2 :(得分:42)

您可以使用PowerShell使用new-selfsignedcertificate cmdlet生成自签名证书:

New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"

注意:不推荐使用makecert.exe。

Cmdlet参考: https://technet.microsoft.com/itpro/powershell/windows/pkiclient/new-selfsignedcertificate

答案 3 :(得分:24)

由于此问题标有IIS,而我找不到如何获得可靠证书的好答案,我会给出2美分的费用:

首先在PowerShell中使用@AuriRahimzadeh中的命令作为管理员:

New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"

这很好,但证书不受信任,将导致以下错误。这是因为它未安装在Trusted Root Certification Authorities

enter image description here

通过mmc.exe开始解决此问题。

然后转到:

档案 - >添加或删除管理单元 - >证书 - >添加 - >计算机帐户 - >本地电脑

展开Personal文件夹,您将看到localhost证书:

enter image description here

将其复制到Trusted Root Certification Authorities - Certificates

最后一步是打开Internet Information Services (IIS) Manager或仅inetmgr.exe。从那里转到您的网站,选择Bindings...Add...Edit...。设置https并从下拉列表中选择您的证书。

enter image description here

您的证书现已受到信任:

enter image description here

答案 4 :(得分:22)

如果您尝试创建自签名证书,可以转到http://localhost/mysite 然后这是一种创建它的方法

makecert -r -n "CN=localhost" -b 01/01/2000 -e 01/01/2099 -eku 1.3.6.1.5.5.7.3.1 -sv localhost.pvk localhost.cer
cert2spc localhost.cer localhost.spc
pvk2pfx -pvk localhost.pvk -spc localhost.spc -pfx localhost.pfx

来自http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/32bc5a61-1f7b-4545-a514-a11652f11200

答案 5 :(得分:7)

我建议使用Pluralsight创建自签名证书的工具:http://blog.pluralsight.com/selfcert-create-a-self-signed-certificate-interactively-gui-or-programmatically-in-net

将您的证书作为.pfx并将其导入IIS。并将其添加为受信任的根证书颁发机构。

答案 6 :(得分:1)

您可以尝试mkcert。

macos:brew install mkcert

答案 7 :(得分:1)

生成本地主机证书的最快方法。

openssl req -x509 -out localhost.crt -keyout localhost.key \
  -newkey rsa:2048 -nodes -sha256 \
  -subj '/CN=localhost' -extensions EXT -config <( \
   printf "[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")

答案 8 :(得分:0)

是和否。自签名证书会生成该警告消息,因为证书未由受信任的证书颁发机构签名。您可以考虑在本地计算机上删除此警告的一些选项。有关详细信息,请参阅此问题的排名最高的答案:

What do I need to do to get Internet Explorer 8 to accept a self signed certificate?

希望这有帮助!


编辑:

抱歉,我最初没有意识到你被限制在localhost。您可以尝试按照以下链接中的说明“使用正确的公用名生成自签名证书。”

http://www.sslshopper.com/article-how-to-create-a-self-signed-certificate-in-iis-7.html

答案 9 :(得分:0)

如果您使用的是Visual Studio,则有一种简单的方法可以使用IIS Express explained here设置和启用SSL

答案 10 :(得分:0)

在LAN(局域网)中,我们有一台服务器计算机,这里名为xhost,运行Windows 10,IIS被激活为WebServer。我们不仅必须通过服务器本身通过 localhost 通过https:// localhost /通过浏览器(例如Google Chrome)从浏览器访问该计算机,而且还必须通过URL为https:// xhost的局域网中的其他主机访问该计算机 /:


https://localhost/
https://xhost/
https://xhost.local/
...

通过这种访问方式,我们这里没有完全限定的域名,而这里只有本地计算机名称xhost。

或通过WAN:


https://dev.example.org/
...

您应使用实际的本地计算机名称替换xhost。

以上解决方案都不能令我们满意。经过数天的尝试,我们采用了解决方案openssl.exe。我们使用2个证书-一个由前者认证的CA(自我认证的权威证书)RootCA.crt和xhost.crt。我们使用PowerShell。

1。创建并更改到安全目录:

cd C:\users\so\crt

2。生成RootCA.pem,RootCA.key和RootCA.crt作为自认证证书颁发机构:


openssl req -x509 -nodes -new -sha256 -days 10240 -newkey rsa:2048 -keyout RootCA.key -out RootCA.pem -subj "/C=ZA/CN=RootCA-CA"
openssl x509 -outform pem -in RootCA.pem -out RootCA.crt

3。发出认证请求:xhost.key,xhost.csr:

C: Country
ST: State
L: locality (city)
O: Organization Name
Organization Unit
CN: Common Name

    

openssl req -new -nodes -newkey rsa:2048 -keyout xhost.key -out xhost.csr -subj "/C=ZA/ST=FREE STATE/L=Golden Gate Highlands National Park/O=WWF4ME/OU=xhost.home/CN=xhost.local"

4。获得RootCA.pem认证的xhost.crt:


openssl x509 -req -sha256 -days 1024 -in xhost.csr -CA RootCA.pem -CAkey RootCA.key -CAcreateserial -extfile domains.ext -out xhost.crt

使用extfile domains.ext文件定义了许多访问服务器网站的安全方式:

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
DNS.2 = xhost
DNS.3 = xhost.local
DNS.4 = dev.example.org
DNS.5 = 192.168.1.2

5。使xhost.pfx PKCS#12,

组合私有xhost.key和证书xhost.crt,从而允许导入iis。此步骤要求输入密码,请按[RETURN]键(不输入密码)将其清空:


openssl pkcs12 -export -out xhost.pfx -inkey xhost.key -in xhost.crt

6。在iis10中导入xhost.pfx

安装在xhost计算机(此处为localhost)中。并重新启动IIS服务。

IIS10 Gestionnaire des services Internet (IIS) (%windir%\system32\inetsrv\InetMgr.exe)

enter image description here

enter image description here

7。在端口443上将SSL与 xhost.local 证书绑定。

enter image description here

重新启动IIS服务。

8。将RootCA.crt导入到受信任的根证书颁发机构

通过可访问网站https:// xhost /的任何计算机上的Google Chrome浏览器。

\ Google Chrome /.../设置 / [高级] /隐私和安全性/安全性/管理证书

导入RootCA.crt

enter image description here

浏览器将显示此有效的证书树:


RootCA-CA
  |_____ xhost.local

enter image description here

https://dev.example.org即使通过WAN也不会通过LAN出现证书错误。

enter image description here

这是整个Powershell脚本 socrt.ps1 文件,用于从零开始生成所有必需的证书文件:


#
# Generate:
#   RootCA.pem, RootCA.key RootCA.crt
#
#   xhost.key xhost.csr xhost.crt
#   xhost.pfx
#
# created  15-EEC-2020
# modified 15-DEC-2020
#
#
# change to a safe directory:
#

cd C:\users\so\crt

#
# Generate RootCA.pem, RootCA.key & RootCA.crt as Certification Authority:
#
openssl req -x509 -nodes -new -sha256 -days 10240 -newkey rsa:2048 -keyout RootCA.key -out RootCA.pem -subj "/C=ZA/CN=RootCA-CA"
openssl x509 -outform pem -in RootCA.pem -out RootCA.crt

#
# get RootCA.pfx: permitting to import into iis10: not required.
#
#openssl pkcs12 -export -out RootCA.pfx -inkey RootCA.key -in RootCA.crt

#
# get xhost.key xhost.csr:
#   C: Country
#   ST: State
#   L: locality (city)
#   O: Organization Name
#   OU: Organization Unit
#   CN: Common Name
#
openssl req -new -nodes -newkey rsa:2048 -keyout xhost.key -out xhost.csr -subj "/C=ZA/ST=FREE STATE/L=Golden Gate Highlands National Park/O=WWF4ME/OU=xhost.home/CN=xhost.local"

#
# get xhost.crt certified by RootCA.pem:
# to show content:
#   openssl x509 -in xhost.crt -noout -text
#
openssl x509 -req -sha256 -days 1024 -in xhost.csr -CA RootCA.pem -CAkey RootCA.key -CAcreateserial -extfile domains.ext -out xhost.crt

#
# get xhost.pfx, permitting to import into iis:
#
openssl pkcs12 -export -out xhost.pfx -inkey xhost.key -in xhost.crt

#
# import xhost.pfx in iis10 installed in xhost computer (here localhost).
#

要为Windows安装openSSL,请访问https://slproweb.com/products/Win32OpenSSL.html