【问题标题】:How to create and trust certificate Using OpenSSL?如何使用 OpenSSL 创建和信任证书?
【发布时间】:2020-05-01 03:16:23
【问题描述】:

如何使用 OpenSSL 创建有效证书以在 IIS 中使用 HTTPS 绑定??

它必须在 Firefox 和所有其他浏览器中也能工作 我正在使用 IIS 10 服务器。
还有 Firefox v70、Firefox Dev 版 v72b5、Chrome v79、Edge v44。我希望 HTTPS 绑定能够在所有这些浏览器中工作。

【问题讨论】:

    标签: iis iis-7 iis-7.5 iis-8 iis-10


    【解决方案1】:

    好的。我想,我找到了答案,

    必须创建一个认证机构才能使用 HTTPS 绑定,因此我们所有的证书都将由它签署。为此,请从此处下载合适的 OpenSSL 版本:Win32/Win64 OpenSSL Installer for Windows 并安装它。然后,为了快速和轻松地工作,可以制作一些脚本文件,

    在文件夹(其中运行脚本)中添加一个名为# 的文件夹。所有的证书文件都将存储在那里。

    用于制作根证书的创建RootCA.bat

    openssl genrsa -des3 -out #/RootCA.key 4096
    openssl req -x509 -new -nodes -sha256 -days 730 -key #/RootCA.key -out #/RootCA.crt -config rootca.csr
    openssl pkcs12 -export -out #/RootCA.p12 -inkey #/RootCA.key -in #/RootCA.crt
    openssl pkcs12 -export -out #/RootCA.pem -inkey #/RootCA.key -in #/RootCA.crt
    openssl pkcs12 -export -out #/RootCA.pfx -inkey #/RootCA.key -in #/RootCA.crt
    

    并且,对于RootCA 的详细信息,请创建RootCa.csr

    [req]
    default_bits = 4096
    prompt = no
    default_md = sha256
    req_extensions = req_ext
    distinguished_name = dn
    
    [ dn ]
    C=US
    ST=New York
    L=Rochester
    O=Developer
    OU=CodeSigner
    CN=*.codesigning.in
    
    [ req_ext ]
    subjectAltName = @alt_names
    
    [ alt_names ]
    DNS.1 = *.codesigning.in
    

    当您运行RootCA.bat 时,它将使用RootCa.csr 的详细信息创建证书并导出.pem.pfx.p12 以及证书文件(RootCA.csr 和'RootCA.key'也被创建)。



    现在,为服务器证书创建server.bat

    openssl req -new -sha256 -nodes -out #/server.csr -newkey rsa:2048 -keyout #/server.key -config server.csr
    openssl x509 -req -in #/server.csr -CA #/RootCA.crt -CAkey #/RootCA.key -CAcreateserial -out #/server.crt -days 365 -sha256 -extfile v3.ext
    openssl pkcs12 -export -out #/server.p12 -inkey #/server.key -in #/server.crt -chain -CAfile #/RootCA.crt
    openssl pkcs12 -export -out #/server.pem -inkey #/server.key -in #/server.crt -chain -CAfile #/RootCA.crt
    openssl pkcs12 -export -out #/server.pfx -inkey #/server.key -in #/server.crt -chain -CAfile #/RootCA.crt
    

    而且,当然要创建一个server.csr 文件,

    [req]
    default_bits = 4096
    prompt = no
    default_md = sha256
    req_extensions = req_ext
    distinguished_name = dn
    
    [ dn ]
    C=US
    ST=New York
    L=Rochester
    O=Developer
    OU=Test & Learn
    CN=*.localhost.in
    
    [ req_ext ]
    subjectAltName = @alt_names
    
    [ alt_names ]
    DNS.1 = *.localhost.in
    

    还有,另一个名为 v3.ext 的文件(我不太清楚),

    authorityKeyIdentifier=keyid,issuer
    basicConstraints=CA:FALSE
    keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
    subjectAltName = @alt_names
    
    [ alt_names ]
    DNS.1 = *.localhost.in
    

    再次运行server.bat 时,它将使用server.csr 的详细信息创建证书,并导出.pem.pfx.p12 以及证书文件(server.csrserver.key 是也创建)。

    注意:您必须为您的自定义域修改 server.csr(默认为 dev.localhost.in 域创建)。

    !!!警告:您必须记住您输入的密码。您可以根据需要修改RootCA.csrRootCA.bat。 (增加过期时间,修改细节等)

    添加到Windows

    当我使用 Windows 时,我只知道导入到 Windows。要添加 Windows,只需单击 RootCA.p12 文件并导入它。请记住,您必须在 Trusted Root Certification AuthourityIntermediate Certification Authourity 中信任 RootCA

    除 Firefox 之外的所有浏览器都会信任该站点。工作完成(部分)!!

    您可以在运行中使用 mmc 进行检查。然后使用Ctrl + M 管理单元证书。

    添加到 FireFox

    因为 FireFox 使用它自己的证书管理器并且不关心系统证书。因此,您必须手动导入 RootCA.crt 以获得信任,并且所有继承证书都将受到信任。如下,

    现在,导入证书并简单地添加与证书的 HTTPS 绑定并使用任何服务器(甚至 IIS 等)托管网站。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-27
      • 2014-09-29
      • 2014-10-04
      • 2023-04-09
      • 2012-08-13
      • 2017-08-03
      • 2017-07-12
      相关资源
      最近更新 更多