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 / 问题 / 1084329
Accepted
Finaria
Finaria
Asked: 2021-11-24 00:43:42 +0800 CST2021-11-24 00:43:42 +0800 CST 2021-11-24 00:43:42 +0800 CST

此站点缺少有效的、受信任的证书 || Apache2 网络服务器,Windows 根 CA

  • 772

我正在一起学习证书和 HTTPS,4 天后我不知道如何设置为受信任。在我的实验室环境中。我有一个具有 CA 角色的 Windows 服务器。

以前我为我的服务器安装了 VM-Dell OpenManage。它具有用于请求的图形界面和用于 HTTPS 访问的导入证书。我成功生成了一个证书签名请求并从我的 Windows CA 服务器(https://xxxx/certsrv/)获得了一个证书,它在 2 分钟内完成。

我想我可以在 apache2 网络服务器(Ubunut20.04)上试试这个。好吧,现在我被卡住了,仍然不知道如何让它工作。

1.目前(在〜50个openssl req之后)我使用这些命令请求证书:

openssl req -new -newkey rsa:2048 -nodes -addext “subjectAltName = DNS:*.mydomain.local” -keyout serverkey.key -out serverreq.csr

2.我从浏览器https://xxxx/certsrv/打开我的 windows CA 服务器并请求证书-->高级证书请求-->粘贴 serverreq.csr 内容-->WebserverTemplate。下载证书。

3.回到linux,我的conf文件(/etc/apache2/sites-avaliable/mysite.conf):长这样。

<VirtualHost _default_:443>
        Protocols h2 http/1.1
                ServerName  mysite.local
                ServerAlias www.mysite.local
                DocumentRoot /var/www/html/mysite
                SSLEngine on
                SSLCertificateFile      /etc/ssl/certandkey/myservercert.crt
                SSLCertificateKeyFile   /etc/ssl/certandkey/myserverkey.key
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
<VirtualHost *:80>
    ServerName mysite.local
    Redirect / https://mysite.local/
</VirtualHost>

我是否需要配置#Server Certificate Chain: 和 #Certificate Authority (CA):?

阿帕奇正在运行

4. 在此之后,如果我打开它说的网页

Certificate - missing
This site is missing a valid, trusted certificate (net::ERR_CERT_COMMON_NAME_INVALID).

但是如果我打开 OpenManage 它会说

Certificate - valid and trusted
The connection to this site is using a valid, trusted server certificate issued by mydomain-DC-CA

两个证书都来自同一个 Windows CA 服务器。

5.我试图配置/etc/ssl/openssl.cnf,但我不太明白怎么做。如果我编辑一些东西,那么没有任何效果。

我的配置有什么问题,我该如何配置?有什么好的教程吗?90% 的时间谷歌只展示自签名证书和浏览器魔法。但我想用 Windows CA 配置它。

感谢帮助

对不起我的英语不好。

https apache2 ssl-certificate-errors ad-certificate-services
  • 1 1 个回答
  • 313 Views

1 个回答

  • Voted
  1. Best Answer
    Gerrit
    2021-11-24T01:39:54+08:002021-11-24T01:39:54+08:00

    生成

    您可以使用一个小的扩展文件 (utf-8) 来预设您想要的条目并更轻松地生成 CSR。如果不是 ASCII,DNS 条目必须是 punycode。(https://www.rfc-editor.org/rfc/rfc3492)

    [req]
    default_bits = 2048
    prompt = no
    default_md = sha256
    distinguished_name = dn
    req_extensions = ext
    
    [ ext ]
    subjectKeyIdentifier=hash
    keyUsage=digitalSignature, keyEncipherment
    subjectAltName = @alt_names
    
    [alt_names]
    DNS.1 = mysite.local
    DNS.2 = www.mysite.local
    
    [ dn ]
    O=ACME
    OU=TESTING
    [email protected]
    CN = mysite.local
    

    您可以将其保存sslcert.cnf为例如。

    关于通配符的备注

    您可以使用通配符,例如 *.example.com。他们只在一个层面上工作。foo.bar.example.com 不会被 *.example.com 覆盖。*example.com 也不起作用,星号必须在其自己的域组件中。

    然后,如果您还没有私钥:

    openssl req -nodes -newkey rsa:2048 -keyout sslcert.key -out sslcert.csr -config sslcert.cnf -utf8

    或者,如果您已经拥有私钥sslcert.key

    openssl req -key sslcert.key -out sslcert.csr -config sslcert.cnf -utf8

    sslcert.csr将是输出(也在sslcert.key第一个示例中)

    您还可以添加一个 subjectAltName 部分-addext

    openssl req -nodes -newkey rsa:2048 -keyout sslcert.key -out sslcert.csr -addext 'subjectAltName = DNS:example.com' -utf8

    名称检查

    您可以使用 openssl 命令检查证书是否可能与您在浏览时使用的域匹配

    openssl x509 -in sslcert.crt -noout -checkhost example.com

    历史上,主题可分辨名称中的 CN 条目用于 SSL 主机名检查。并且它仍然通常由其中一个域填充,但例如 Chrome 将不接受不使用主题备用名称 (SAN) 部分的证书。这也是用于多名称证书的部分(即使您只使用带和不带 www 的域,这已经是多名称证书)。根据 CA/Browser 规范,您在 CN 中设置的任何名称也必须包含在 altnames 部分中。

    你可以在输出中看到那些

    openssl x509 -text -noout -in cert.crt | grep -F 'Subject Alternative Name:' -A 1

    不幸的是,没有现成的仅适用于 SAN 部分的输出开关。

    看起来像:

                X509v3 Subject Alternative Name:
                    DNS:cert.local, DNS:cert.example.com
    

    网络服务器检查

    要查看您的网络服务器是否返回您设置的证书和链(如果您有中间体),您还可以使用 openssl 命令行(可能来自网络服务器机器本身)。

    openssl s_client -connect example.com:443 -servername example.com -showcerts
    

    如果您使用的 CA 不包含在执行 openssl 命令的机器上,您将收到验证错误,但至少您可以看到返回的证书。

    在连接中,您还可以使用 IP 地址,因此如果网络服务器在同一台机器上并且还侦听环回,您可以说

    openssl s_client -connect localhost:443 -servername example.com -showcerts
    

    -servername如果网络服务器在端口 443 上有多个虚拟主机,则用于选择正确的虚拟主机。

    • 0

相关问题

  • 为 IIS 7.0 问题创建证书

  • IE6 和更高版本在 HTTPS 处理方面的差异

  • 如何模拟连接到 HTTPS 并记录握手?

  • SSL 错误:ssl_error_bad_mac_read

  • 在实时站点上使用自签名证书有什么好处?

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

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

    • 9 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

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

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +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