Https

此站點缺少有效的、受信任的證書 ||Apache2 網路伺服器,Windows 根 CA

  • November 24, 2021

我正在一起學習證書和 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% 的時間Google只展示自簽名證書和瀏覽器魔法。但我想用 Windows CA 配置它。

感謝幫助

對不起我的英語不好。](https://i.stack.imgur.com/40Mr8.png)

生成 ==您可以使用一個小的擴展文件 (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
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 將不接受不使用主題備用名稱 (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 上有多個虛擬主機,則用於選擇正確的虛擬主機。

引用自:https://serverfault.com/questions/1084329