【问题标题】:How to create an OpenSSL Self-Signed Certificate using SAN? [duplicate]如何使用 SAN 创建 OpenSSL 自签名证书? [复制]
【发布时间】:2018-02-16 10:18:51
【问题描述】:

从最新的 Chrome 60+ 开始,如果没有 SAN,它会在 HTTPS 页面上抛出 ERROR。 OpenSSL 命令行不添加这些扩展。

【问题讨论】:

    标签: ssl command-line https openssl ssl-certificate


    【解决方案1】:

    没关系,我自己想通了。

    OpenSSL CLI 允许 -subj 标志设置有关证书颁发机构 (CA) 的信息,但无法使用命令行添加主题备用名称 (SAN)。所以我不得不求助于调用-config,然后是我想要作为简单配置加载的文件。对于创建自签名证书,这应该足够了,但不适用于生产:

    # ./config/tiny_openssl.conf    
    [CA_default]
    copy_extensions = copy
    
    [req]
    default_bits = 4096
    prompt = no
    default_md = sha256
    distinguished_name = req_distinguished_name
    x509_extensions = v3_ca
    
    [req_distinguished_name]
    C = US
    ST = Washington
    L = Seattle
    O = My Company
    OU = IT Department
    emailAddress = it@mycompany.com
    CN = mycompany.com
    
    [v3_ca]
    basicConstraints = CA:FALSE
    keyUsage = digitalSignature, keyEncipherment
    subjectAltName = @alternate_names
    
    [alternate_names]
    DNS.1 = localhost
    DNS.2 = *.localhost
    DNS.3 = app.localhost
    # ...
    

    [alternate_names] 值必须与生成的证书在 SSL 下提供的站点(或多个站点)的 url 匹配。像localhostapp.localhost 这样的东西可以工作。然后,我们使用这个配置触发 OpenSSL。

    $ openssl req -x509 -newkey rsa:4096 -sha256 -utf8 -days 365 -nodes \
        -config ./config/tiny_openssl.conf \
        -keyout ./certificates/private.key \
        -out ./certificates/ssl/certificate.crt 
    

    在 Windows 10 中将此 .crt 文件添加为受信任的根证书颁发机构,重新启动 Chrome 和 Web 服务器,然后瞧。

    如果您担心 HTTP 事务的性能,可以将 rsa 更改为 2048 位。


    这可能仅适用于服务器和浏览器之间的内部测试。如果您需要具有 100% 有效 SSL 证书的更完整和可靠的解决方案,您应该创建一个 CA、一个 CRS,然后使用该 CA 签署 CRS,这将产生一个有效的自签名证书:

    https://stackoverflow.com/a/21494483/647490

    【讨论】:

    • 谢谢,这行得通 :) 在 Mac 上生成 .crt 文件,如上,链接到您的 https ssl 配置,重新启动 Apache。然后也双击 .crt 文件“添加到钥匙串”,然后双击已安装的证书并展开“信任”部分并选择“始终信任”,重新启动 chrome,然后“瞧”
    • 这是我的一些经验教训:如果您只有一个域,则可以使用语法subjectAltName = DNS:your.domain。您还可以将 [ v3_ca ] 部分附加到您的 openssl.cnf 文件的副本;然后将合并多个部分实例。在其他地方的答案中,建议使用参数-extensions ... -extfile ... 作为替代方案。但是,这只适用于openssl ca,而openssl req 不知道-extfile。感谢@DarkGhostHunter,我现在可以在 MacOS 上对我的证书进行自签名,并通过系统证书存储在 Chrome 浏览器中使用它们。
    猜你喜欢
    • 2014-11-19
    • 2014-03-05
    • 1970-01-01
    • 2021-10-04
    • 2014-11-20
    • 2019-11-07
    • 1970-01-01
    • 2012-11-28
    相关资源
    最近更新 更多