首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >此站点缺少一个有效的、受信任的证书\\ Apache2 root服务器,Windows

此站点缺少一个有效的、受信任的证书\\ Apache2 root服务器,Windows
EN

Server Fault用户
提问于 2021-11-23 08:43:42
回答 1查看 800关注 0票数 0

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

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

我想我可以在apache2 can服务器(Ubunut20.04)上尝试这一点。好吧,现在我被困住了,仍然不知道如何让它开始工作。

1.目前(在~50 openssl req之后),我使用以下命令请求证书:

代码语言:javascript
复制
openssl req -new -newkey rsa:2048 -nodes -addext “subjectAltName = DNS:*.mydomain.local” -keyout serverkey.key -out serverreq.csr

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

3.回到linux,我的conf文件(/etc/apache2/sites avaliable/mysite.conf):如下所示。

代码语言:javascript
复制
<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证书链:和#证书颁发机构(CA):?

阿帕奇

4.之后,如果我打开网页,上面写着

代码语言:javascript
复制
Certificate - missing
This site is missing a valid, trusted certificate (net::ERR_CERT_COMMON_NAME_INVALID).

但如果我打开OpenManage上面写着

代码语言:javascript
复制
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来配置它。

谢谢你的帮助

对不起我的英语。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2021-11-23 09:39:54

生成

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

代码语言:javascript
复制
[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
emailAddress=noreply@example.com
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不接受不使用Subject Alternative Name (SAN)部分的证书。这也是用于多名证书的部分(即使您只使用带有或不带www的域,即已经是多名证书)。根据CA/Browser规范,您在CN中设置的任何名称也必须包括在altname部分。

的输出中可以看到

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

不幸的是,只有SAN部分没有现成的输出开关。

看上去:

代码语言:javascript
复制
            X509v3 Subject Alternative Name:
                DNS:cert.local, DNS:cert.example.com

Webserver服务器检查

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

代码语言:javascript
复制
openssl s_client -connect example.com:443 -servername example.com -showcerts

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

在连接中,您还可以使用ip地址,因此如果webserver位于同一台计算机上,并且也侦听回送,您可以这样说。

代码语言:javascript
复制
openssl s_client -connect localhost:443 -servername example.com -showcerts

如果443服务器在端口443上有多个vhost,则-servername用于选择正确的vhost。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1084329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档