Apache Ansible X509证书缺少使用者替代名称

Apache Ansible X509证书缺少使用者替代名称,apache,google-chrome,openssl,vagrant,ansible,Apache,Google Chrome,Openssl,Vagrant,Ansible,我正在使用Vagrant和Ansible角色生成SSL/TLS证书,但无论我如何尝试,生成的证书都缺少主题替代名称: - name: Create an SSL security key & CSR (Certificate Signing Request) shell: openssl req -new -newkey rsa:2048 -nodes -keyout /etc/apache2/ssl/{{ item.host }}.key -subj "/subjectAl

我正在使用Vagrant和Ansible角色生成SSL/TLS证书,但无论我如何尝试,生成的证书都缺少主题替代名称:

- name: Create an SSL security key & CSR (Certificate Signing Request)    
  shell: openssl req -new -newkey rsa:2048 -nodes -keyout /etc/apache2/ssl/{{ item.host }}.key -subj "/subjectAltName=DNS.1={{ item.host }}, DNS.2=www.{{ item.host }}, IP.1=192.168.33.11/C={{params['ssl'].country_name}}/ST={{params['ssl'].state}}/L={{params['ssl'].locality}}/O={{params['ssl'].organization}}/CN={{ item.host }}" -out /etc/apache2/ssl/{{ item.host }}.csr
  args:
    executable: "/bin/bash"
  with_items: "{{params['vhosts']}}"
  when: item.ssl is defined and item.ssl
证书文件会生成,但它们总是说

缺少主题备选名称

这是我的环境的调试:

$ openssl version
OpenSSL 1.0.2l  25 May 2017

$ openssl x509 -noout -text -in /etc/apache2/ssl/myhost.dev.crt
Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number:
            a2:77:35:c7:6a:72:35:22
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: subjectAltName=DNS.1=myhost.dev, DNS.2=www.myhost.dev, IP.1=192.168.33.11, C=DE, ST=Berlin, L=Berlin, O=Ltd, CN=myhost.dev
        Validity
            Not Before: Jun 12 15:36:58 2017 GMT
            Not After : Jun 10 15:36:58 2027 GMT
        Subject: subjectAltName=DNS.1=myhost.dev, DNS.2=www.myhost.dev, IP.1=192.168.33.11, C=DE, ST=Berlin, L=Berlin, O=Ltd, CN=myhost.dev

您的密钥未使用X509扩展名。为了将它们添加到CSR中,您需要一个配置文件来指定要添加的扩展名。命令行界面不够友好,无法在命令行上轻松指定X509扩展

当您调用
openssl
生成CSR时,您可以使用Bash的进程替换命令动态生成修改后的配置文件

openssl req \
    -new -newkey rsa:2048 \
    -subj "{your existing subject}" \
    ... \
    -x509 \
    -reqexts SAN \
    -config <(
        cat /etc/ssl/openssl.cnf
        printf '\n[SAN]\nsubjectAltName=DNS:example.com,DNS:www.example.com'
    )
openssl请求\
-新-新密钥rsa:2048\
-subj“{您现有的主题}”\
... \
-x509\
-REQUEXTS SAN\

-配置您的密钥未使用X509扩展名。为了将它们添加到CSR中,您需要一个配置文件来指定要添加的扩展名。命令行界面不够友好,无法在命令行上轻松指定X509扩展

当您调用
openssl
生成CSR时,您可以使用Bash的进程替换命令动态生成修改后的配置文件

openssl req \
    -new -newkey rsa:2048 \
    -subj "{your existing subject}" \
    ... \
    -x509 \
    -reqexts SAN \
    -config <(
        cat /etc/ssl/openssl.cnf
        printf '\n[SAN]\nsubjectAltName=DNS:example.com,DNS:www.example.com'
    )
openssl请求\
-新-新密钥rsa:2048\
-subj“{您现有的主题}”\
... \
-x509\
-REQUEXTS SAN\

-config在对openssl库进行了一些研究并了解了它的工作原理之后,我犯了使用-X509*的错误:添加-X509将创建一个证书,而不是一个请求

我通过以下主要步骤解决了我的问题:

  • 设置证书颁发机构:颁发数字证书的实体 证书
  • 创建服务器或用户证书请求
  • 对服务器证书请求进行签名
  • 将此密钥和证书添加到主机
  • 将证书添加到浏览器中

  • 我写了一个关于如何在我的计算机上实现这一点的一步一步的教程。

    在对openssl库进行了一些研究并理解了它的工作原理之后,我犯了使用-X509*的错误:添加-X509将创建证书而不是请求

    我通过以下主要步骤解决了我的问题:

  • 设置证书颁发机构:颁发数字证书的实体 证书
  • 创建服务器或用户证书请求
  • 对服务器证书请求进行签名
  • 将此密钥和证书添加到主机
  • 将证书添加到浏览器中

  • 我写了一个关于如何在我的计算机上实现这一点的一步一步的教程。

    发行人:subjectAltName=DNS.1=myhost.dev,DNS.2=www.myhost.dev,IP.1=192.168.33.11…
    不正确。这似乎是由于您使用了
    -sub…
    。也许你应该手动创建它。另请参阅,您还需要将自签名证书放入相应的信任存储。
    颁发者:subjectAltName=DNS.1=myhost.dev,DNS.2=www.myhost.dev,IP.1=192.168.33.11…
    不正确。这似乎是由于您使用了
    -sub…
    。也许你应该手动创建它。另请参见,您还需要将自签名证书放入相应的信任存储中。