gpt4 book ai didi

macos - 在 Mac OS X 上为 Xampp Apache 设置 SSL 以解决 Chrome 上的 missing_subjectAltName

转载 作者:太空宇宙 更新时间:2023-11-03 14:39:29 25 4
gpt4 key购买 nike

我正在尝试在 Mac OS X Yosemite 上为 Apache(通过 XAMPP 安装)设置 SSL。

假设我已经设置了一个名为“my-local-host”的本地主机名。我按照说明 here运行以下命令设置证书:

# 1. Create host key
sudo ssh-keygen -f my-local-host.key

# 2. Create SSL certificate
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout my-local-host.key -out my-local-host.crt

# 3. Create nopass Host Key
sudo openssl rsa -in my-local-host.key -out my-local-host.nopass.key

注意:我在 /Applications/XAMPP/xamppfiles/apache2/ssl 目录中完成了所有这些操作。

在此之后,我向 httpd-vhosts.conf 添加了一个虚拟主机列表。

<VirtualHost *:443>
ServerName my-local-host
DocumentRoot "/path/to/my-local-host/files"

SSLEngine on
SSLCertificateFile "/Applications/XAMPP/xamppfiles/apache2/ssl/my-local-host.crt"
SSLCertificateKeyFile "/Applications/XAMPP/xamppfiles/apache2/ssl/my-local-host.key"

<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/Applications/XAMPP/xamppfiles/cgi-bin">
SSLOptions +StdEnvVars
</Directory>

<Directory "/path/to/my-local-host/files">
ServerSignature Off
Options Indexes FollowSymLinks Includes execCGI
AllowOverride All
Require all granted
</Directory>
ErrorLog "logs/my_local_host_log"
</VirtualHost>

然后我使用以下内容将证书添加到系统钥匙串(keychain):

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /Applications/XAMPP/xamppfiles/apache2/ssl/my-local-host.crt

然后我重新启动 Apache 并尝试加载 https://my-local-host在 Chrome 浏览器中。这是我收到的错误:

This server could not prove that it is my-local-host; its security certificate is from [missing_subjectAltName].

在网上搜索后,似乎这是一个与 Chrome 从 Chrome 58 中删除 CommonName 支持有关的问题。

我发现这个标题贴切:Missing [missing_subjectAltName] in ssl certificate (since Chrome 58)带有创建合规证书的命令:

sudo openssl req -newkey rsa:2048 -x509 -nodes -keyout my-local-host.key -new -out my-local-host.crt -subj /CN=my-local-host -reqexts SAN -extensions SAN -config <(cat /System/Library/OpenSSL/openssl.cnf ; printf '[SAN]\nsubjectAltName=DNS:my-local-host') -sha256 -days 3650  

不幸的是,当我运行它时出现以下错误:

error on line -1 of /dev/fd/63
80231:error:02001009:system library:fopen:Bad file descriptor:/SourceCache/OpenSSL098/OpenSSL098-52.40.1/src/crypto/bio/bss_file.c:126:fopen('/dev/fd/63','rb')
80231:error:2006D002:BIO routines:BIO_new_file:system lib:/SourceCache/OpenSSL098/OpenSSL098-52.40.1/src/crypto/bio/bss_file.c:131:
80231:error:0E078002:configuration file routines:DEF_LOAD:system lib:/SourceCache/OpenSSL098/OpenSSL098-52.40.1/src/crypto/conf/conf_def.c:199:

是否有其他更简单的方法可以创建合规证书来解决 Chrome 上 missing_subjectAltName 的问题?

最佳答案

我刚刚设法从这篇文章中找到了解决此问题的方法:Fixing Chrome 58+ [missing_subjectAltName] with openssl when using self signed certificates .非常感谢作者。

所以这是我所做的工作:

首先,我们将删除之前创建的所有文件。

其次,我们在工作目录 /Applications/XAMPP/xamppfiles/apache2/ssl 中创建这两个文件:

第一个文件 - my-local-host.csr.cnf 包含以下内容:

[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn

[dn]
C=NG
ST=Lagos
L=Ikeja
O=Local, LLC
OU=Tech
emailAddress=admin@yourdomain.com
CN = my-local-host

注意:确保所有字段都有一个值,即没有空白条目。

第二个文件 - my-local-host.v3.ext 包含以下内容:

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = localhost
DNS.2 = my-local-host

第三,运行以下命令:

sudo openssl genrsa -des3 -out rootCA.key 2048
sudo openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem
openssl req -new -sha256 -nodes -out my-local-host.csr -newkey rsa:2048 -keyout my-local-host.key -config <( cat my-local-host.csr.cnf )
sudo openssl x509 -req -in my-local-host.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out my-local-host.crt -days 500 -sha256 -extfile my-local-host.v3.ext

注意:我尝试使用 sudo 运行第三个命令,但由于某种原因我遇到了错误,我在网上找到一些信息建议在没有它的情况下运行它,它对我有用。

完成所有这些后,运行以下命令:

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain my-local-host.crt

最后,重新启动 Apache。

我希望这有助于解决您的 SSL 问题。

关于macos - 在 Mac OS X 上为 Xampp Apache 设置 SSL 以解决 Chrome 上的 missing_subjectAltName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44464086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com