AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 73689
In Process
Vilx-
Vilx-
Asked: 2009-10-13 07:35:55 +0800 CST2009-10-13 07:35:55 +0800 CST 2009-10-13 07:35:55 +0800 CST

如何为 Apache2 创建多域自签名证书?

  • 772

我有一个小型私人网络服务器,其中有几个虚拟主机。我知道不可能为每个单独的虚拟主机分配证书,因为服务器仅在建立 SSL 连接后才发现请求了哪个虚拟主机。但是是否有可能拥有一个列出多个域的 SSL 证书?或者至少是一个通配符域,例如 *.example.com。如果是,我必须编写哪些 Linux 命令来制作这样的自签名证书?

补充:澄清一下——我对所有虚拟主机只有一个 IP 地址。

apache-2.2
  • 4 4 个回答
  • 34561 Views

4 个回答

  • Voted
  1. Stanislav German-Evtushenko
    2015-04-04T07:39:10+08:002015-04-04T07:39:10+08:00

    以下内容应该适合您:

    cp /etc/ssl/openssl.cnf /tmp/
    echo '[ subject_alt_name ]' >> /tmp/openssl.cnf
    echo 'subjectAltName = DNS:www.example.com, DNS:site1.example.com, DNS:site2.example.com' >> /tmp/openssl.cnf
    
    openssl req -x509 -nodes -newkey rsa:2048 \
      -config /tmp/openssl.cnf \
      -extensions subject_alt_name \
      -keyout www.example.com.key \
      -out www.example.com.pem \
      -subj '/C=XX/ST=XXXX/L=XXXX/O=XXXX/OU=XXXX/CN=www.example.com/[email protected]'
    

    结果:

    $ openssl x509 -in www.example.com.pem -text -noout
    Certificate:
        Data:
            Version: 3 (0x2)
            Serial Number: 17965603478303142689 (0xf952a52d7bc7f321)
        Signature Algorithm: sha256WithRSAEncryption
            Issuer: C=XX, ST=XXXX, L=XXXX, O=XXXX, OU=XXXX, CN=www.example.com/[email protected]
            Validity
                Not Before: Apr  3 15:34:27 2015 GMT
                Not After : May  3 15:34:27 2015 GMT
            Subject: C=XX, ST=XXXX, L=XXXX, O=XXXX, OU=XXXX, CN=www.example.com/[email protected]
            Subject Public Key Info:
                Public Key Algorithm: rsaEncryption
                    Public-Key: (2048 bit)
                    Modulus:
                        00:c6:e8:17:93:a4:8f:08:11:61:11:1b:cc:17:52:
                        b6:33:39:33:0e:94:3f:ac:ae:dd:70:4b:e6:d6:b0:
                        11:f1:93:b4:3d:dc:34:99:27:b6:45:4b:13:0c:69:
                        1e:11:d2:b9:38:5f:e0:d1:b0:58:e4:3c:c0:9f:58:
                        3d:5d:fa:67:3e:3c:05:1b:e3:86:20:18:d5:d7:83:
                        77:b5:0c:1d:9a:26:96:10:3f:2c:e5:ce:ed:6e:99:
                        5a:35:3e:06:f0:52:aa:72:5e:c0:33:7c:c8:16:f9:
                        6b:3e:7d:7e:5a:1f:cf:11:63:4d:ad:bf:77:bd:e3:
                        0f:8f:24:1d:f5:c8:06:ab:d9:62:8d:13:56:62:a9:
                        b8:77:c0:11:b6:ff:a7:63:93:a7:22:c2:41:48:6f:
                        bd:42:10:00:33:14:da:3b:ca:e0:07:c2:b6:50:55:
                        f0:4d:6b:0d:eb:87:a8:bd:4d:c6:1b:20:d8:27:68:
                        d0:e2:3b:32:91:b8:8e:cf:25:06:bf:43:fd:8f:96:
                        fa:eb:af:0f:e1:5c:47:06:84:8b:f4:35:0a:a8:f3:
                        7e:af:34:50:7f:62:bc:5e:53:09:90:97:27:cf:9a:
                        56:d7:f6:af:32:92:c4:c9:ab:90:6e:a6:09:20:0b:
                        46:28:22:0b:45:71:b9:17:77:d8:da:63:24:27:5c:
                        60:a5
                    Exponent: 65537 (0x10001)
            X509v3 extensions:
                X509v3 Subject Alternative Name: 
                    DNS:www.example.com, DNS:site1.example.com, DNS:site2.example.com
        Signature Algorithm: sha256WithRSAEncryption
             83:ce:18:74:f9:17:92:91:bd:82:13:ac:64:e7:de:9e:38:d7:
             26:0f:2d:3e:8f:f2:17:c5:fc:17:06:fb:27:e7:0a:b7:f2:8e:
             bb:18:6e:f4:4c:17:e8:8d:dc:51:d5:d2:e6:1c:72:e4:28:75:
             a2:79:ae:b6:b6:8c:ec:08:08:4d:73:79:b7:22:26:40:ac:38:
             5c:f2:2b:4f:44:60:55:db:90:b3:63:74:ad:e7:26:12:ad:0d:
             ec:4a:cd:4f:7a:a0:54:62:f5:a7:bc:80:c2:fa:34:43:3c:f1:
             aa:f7:6e:4e:e1:80:fb:c7:cc:44:3a:2b:a4:6c:5b:0f:3f:83:
             6e:8d:d5:28:cf:6c:f0:c6:40:4d:c4:d4:3f:9c:9d:a4:47:a7:
             27:d1:5b:2b:5f:0d:bd:3f:7c:2e:19:fa:bc:24:bd:1f:64:81:
             8b:a4:e3:33:10:35:55:f9:73:2d:8b:e8:b8:d7:e3:49:0c:35:
             af:53:df:48:d8:df:ce:b1:5f:6c:74:1c:74:89:45:2e:28:2c:
             1f:fe:d8:a4:44:9c:c7:bc:d8:6a:46:38:df:e3:d0:05:37:27:
             d0:08:e5:93:b8:0e:d9:d9:dd:7c:28:75:18:27:be:4e:72:47:
             13:b9:a2:93:0e:83:e9:b8:49:f4:75:ad:e0:0f:9b:e5:96:4f:
             33:33:f1:27
    

    如果您想要请求而不是自签名,只需将 -x509 替换为 -new 并将 -extensions 替换为 -reqexts。

    更新

    可以使用最新版本的 openssl 在命令行中直接指定主题备用名称:

    openssl req -x509 -nodes -newkey rsa:2048 \
      -subj '/C=XX/ST=XXXX/L=XXXX/O=XXXX/OU=XXXX/CN=www.example.com/[email protected]' \
      -addext 'subjectAltName = DNS:www.example.com, DNS:site1.example.com, DNS:site2.example.com' \
      -keyout www.example.com.key \
      -out www.example.com.pem
    

    另请参阅https://security.stackexchange.com/questions/74345/provide-subjectaltname-to-openssl-directly-on-the-command-line/183973#183973

    • 14
  2. drAlberT
    2009-10-13T08:09:02+08:002009-10-13T08:09:02+08:00

    在 subjectAltName:dNSName名称字段中创建一个domain.com 作为 CN和*.domain.com 的证书 - 有效。

    在openssl中,将其添加到扩展中:

    subjectAltName          = DNS:*.domain.com
    
    • 3
  3. Yves Junqueira
    2009-10-15T18:19:15+08:002009-10-15T18:19:15+08:00

    扩展艾伯特的答案:

    http://blog.loftninjas.org/2008/11/11/configuring-ssl-requests-with-subjectaltname-with-openssl/

    您不必使用通配符域。您可以只列出您需要的所有主机名作为主题替代名称,它应该适用于所有主要浏览器。

    • 3
  4. coolwater
    2009-10-13T21:20:47+08:002009-10-13T21:20:47+08:00

    首先 - 您可以为每个单独的虚拟主机分配一个证书 - 关键是为每个虚拟主机设置不同的私有(和外部/公共,如果你想使其世界可访问)IP地址。

    但是可以 - 或者,如果您的虚拟主机只是 *.example.com,您可以分配通配符证书。

    对于命令 - 谷歌有很多结果 - 我将在这里举一个例子:

    http://www.justinsamuel.com/2006/03/11/howto-create-a-self-signed-wildcard-ssl-certificate/

    并确保输入 *.example.com 作为通用名称。

    • 0

相关问题

  • Apache Django Mod_Wsgi - 自动重新加载应用程序

  • Apache:对多个虚拟主机使用相同的目录指令

  • Apache 上的子域不工作 - 找不到服务器

  • PHP 作为 CGI 还是 Apache 模块?

  • 避免将某些丢失的文件记录到 Apache2 错误日志中

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve