Iis 如何为用于开发的域名创建自签名证书?

Iis 如何为用于开发的域名创建自签名证书?,iis,ssl,certificate,ssl-certificate,self-signed,Iis,Ssl,Certificate,Ssl Certificate,Self Signed,我有用于开发目的的subdomain.example.com。我的web应用程序解决方案包含一个web API等,我需要从外部系统调用它,因此我不使用localhost 我现在需要测试SSL,并需要为我的子域.example.com开发域名提供证书 我已尝试创建中概述的自签名证书,但此证书仅适用于localhost。此证书是否可用于我的目的,或者我是否必须为我的开发子域创建自签名?如果我必须为我的开发子域创建自签名证书,我可以使用什么工具或在线服务(免费)?使用PowerShell 从Windo

我有用于开发目的的
subdomain.example.com
。我的web应用程序解决方案包含一个web API等,我需要从外部系统调用它,因此我不使用localhost

我现在需要测试SSL,并需要为我的
子域.example.com
开发域名提供证书


我已尝试创建中概述的自签名证书,但此证书仅适用于localhost。此证书是否可用于我的目的,或者我是否必须为我的开发子域创建自签名?如果我必须为我的开发子域创建自签名证书,我可以使用什么工具或在线服务(免费)?

使用PowerShell

从Windows 8.1和Windows Server 2012 R2(Windows PowerShell 4.0)及更高版本,您可以使用new
new SelfSignedCertificate
cmdlet创建自签名证书:

示例:

New-SelfSignedCertificate -DnsName www.mydomain.com -CertStoreLocation cert:\LocalMachine\My

New-SelfSignedCertificate -DnsName subdomain.mydomain.com -CertStoreLocation cert:\LocalMachine\My

New-SelfSignedCertificate -DnsName *.mydomain.com -CertStoreLocation cert:\LocalMachine\My
使用IIS管理器

  • 启动IIS管理器
  • 在服务器级别的IIS下,选择服务器证书
  • 在操作的右侧,选择创建自签名证书
  • 如果显示“为证书指定一个友好的名称”,请键入适当的名称以供参考。
  • 示例:
    www.domain.com
    subdomain.domain.com
  • 然后,从左侧的列表中选择您的网站
  • 在操作的右侧,选择绑定
  • 添加新的HTTPS绑定并选择您刚刚创建的证书(如果您的证书是通配符证书,则需要指定主机名)
  • 单击OK并测试它

  • 使用IIS的自签名证书功能,您无法设置证书的通用名称(CN),因此无法创建绑定到您选择的子域的证书

    解决此问题的一种方法是使用makecert.exe,它与.Net 2.0 SDK捆绑在一起。在我的服务器上,它位于:

    C:\Program Files\Microsoft.Net\SDK\v2.0 64bit\Bin\makecert.exe
    
    您可以按如下方式创建签名机构并将其存储在LocalMachine证书存储库中(这些命令必须从管理员帐户或在提升的命令提示符下运行):

    然后,您可以创建绑定到您的子域并由新授权机构签名的证书:

    (请注意,-in参数的值必须与用于生成上述权限的CN值相同。)

    然后,您的证书应该出现在IIS管理器中,并绑定到您的站点,如Tom Hall的帖子中所述


    Mike O'Brien在

    上发表了一篇出色的博客文章,为您的特定域创建了新证书,我们对他的解决方案表示敬意:

    以管理员身份打开Powershell ISE,运行以下命令:

    New-SelfSignedCertificate -DnsName *.mydomain.com, localhost -CertStoreLocation cert:\LocalMachine\My
    
    要信任新证书:

    • 打开mmc.exe
    • 转到控制台根->证书(本地计算机)->个人
    • 选择已创建的证书,右键单击->所有任务->导出,然后按照导出向导创建.pfx文件
    • 转到控制台根->证书->受信任的根证书颁发机构并导入新的.pfx文件
    将证书绑定到您的站点:

    • 打开IIS管理器
    • 选择您的站点并在右侧窗格中选择编辑站点->绑定
    • 添加具有正确主机名和新证书的新https绑定

    当我想对IIS 8上托管的项目启用SSL时,我遇到了同样的问题。最后,我使用的工具是,在与makecert命令斗争了很多天后。证书是在Debian中生成的,但我可以无缝地将其导入IIS 7和8

    下载与您的操作系统和配置文件兼容的。将配置文件设置为OpenSSL的默认配置

    首先,我们将生成私钥和证书颁发机构(CA)证书。此证书用于签署证书请求(CSR)

    您必须填写此过程中所需的所有字段

  • openssl-req-new-x509-days 3650-extensions v3_ca-keyout root-cakey.pem-out root-cacert.pem-newkey rsa:4096
  • 您可以使用以下默认设置创建配置文件: 现在我们将生成证书请求,它是发送给证书颁发机构的文件

    必须在站点的域中设置公共名称,例如:public.organization.com

  • openssl-req-new-nodes-out server-csr.pem-keyout server-key.pem-newkey rsa:4096
  • 现在,使用生成的CA证书对证书请求进行签名

  • opensslx509-req-days 365-CA root-cacert.pem-CAkey root-CAkey.pem-CAcreateserial-in-server-csr.pem-out-server-cert.pem
  • 生成的证书必须导出到可以导入IIS的.pfx文件中

  • openssl pkcs12-export-out server-cert.pfx-inkey server-key.pem-in-server-cert.pem-certfile root-cacert.pem-name“自签名服务器证书”
  • 在这一步中,我们将导入证书CA

  • 在您的服务器中,必须将CA证书导入受信任的根证书颁发机构,因为IIS可以信任要导入的证书。请记住,要导入IIS的证书已使用CA的证书签名

    • 打开命令提示符并键入mmc
    • 单击文件
    • 选择添加/删除管理单元…
    • 双击证书
    • 选择计算机帐户下一步->
    • 选择本地计算机完成
    • 正常
    • 转到证书->受信任的根证书
      makecert.exe -n "CN=subdomain.example.com" -pe -ss My -sr LocalMachine
       -sky exchange -m 120 -in "My Company Development Root CA" -is Root
       -ir LocalMachine -a sha1 -eku 1.3.6.1.5.5.7.3.1
      
      New-SelfSignedCertificate -DnsName *.mydomain.com, localhost -CertStoreLocation cert:\LocalMachine\My
      
      New-SelfSignedCertificate  -DnsName "*.dev.local", "dev.local", "localhost"  -CertStoreLocation cert:\LocalMachine\My  -FriendlyName "Dev Cert *.dev.local, dev.local, localhost"  -NotAfter (Get-Date).AddYears(15)
      
      New-SelfSignedCertificate  -DnsName "*.dev.local", "dev.local", "localhost"  -CertStoreLocation cert:\LocalMachine\My
      
      127.0.0.1  myname.dev.local
      
      CheckNetIsolation LoopbackExempt -a -n=Microsoft.MicrosoftEdge_8wekyb3d8bbwe