在 macOS 的本地主机上设置 HTTPS [mac os catalina 10.15.2]

问题描述 投票:0回答:2
cd ~/
mkdir .localhost-ssl

sudo openssl genrsa -out ~/.localhost-ssl/localhost.key 2048

sudo openssl req -new -x509 -key ~/.localhost-ssl/localhost.key -out ~/.localhost-ssl/localhost.crt -days 3650 -subj /CN=localhost

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/.localhost-ssl/localhost.crt

npm install -g http-server
echo " 
function https-server() {
  http-server --ssl --cert ~/.localhost-ssl/localhost.crt --key ~/.localhost-ssl/localhost.key
}
" >> ~/.bash_profile

source ~/.bash_profile

echo "You're ready to use https on localhost 💅"
echo "Navigate to a project directory and run:"
echo ""
echo "https-server"

它不起作用......这段代码有什么问题吗?

代码来源:https://gist.github.com/jonsamp/587b78b7698be7c7fd570164a586e6b7

https localhost
2个回答
5
投票

经过几天的努力,我终于找到了一种使用 https 运行 localhost 的方法。我想这个解决方案适用于任何 macOS 版本。

来自:https://letsencrypt.org/docs/certificates-for-localhost/

我发现了这个 minica 工具,它是一个简单的 CA,旨在用于 CA 操作员还操作将使用证书的每个主机的情况。当要求生成证书时,它会自动生成密钥和证书。它不提供 OCSP 或 CRL 服务。例如,Minica 适用于为 RPC 系统或微服务生成证书。

https://github.com/jsha/minica

步骤1

brew install minica

步骤2

minica --domains localhost

在minica-key.pem和minica.pem中生成根密钥和证书,然后 生成并签署最终实体密钥和证书,将它们存储在 ./localhost/

步骤3

将这些证书和密钥文件添加到您的配置服务器文件中。例如配置:/etc/apache2/extra/httpd-ssl.conf

<VirtualHost _default_:443>
    DocumentRoot "/Volumes/WORK/www/webapp"
    ServerName localhost

    SSLEngine on
    SSLCertificateFile /Users/xxxx/selfsigned-certs/localhost/cert.pem
    SSLCertificateKeyFile /Users/xxxx/selfsigned-certs/localhost/key.pem

    <Directory "/Volumes/WORK/www/webapp">
        Options All
        MultiviewsMatch Any
        AllowOverride All
        Require all granted
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

步骤4

重启服务器

步骤5

在钥匙串访问 ---> 文件 ---> 导入项目 导入“minica.pem”文件

步骤6

在 Chrome 浏览器中,当访问 https://localhost 时,您将收到一条带有不可信证书的消息 要使其成为值得信赖的产品,您必须访问:
chrome://settings/security -->“管理证书”
从那里打开“minica...”证书并将其设置为受信任

步骤7

重新打开 https://localhost ---> 它会将证书识别为有效且可信的证书


快乐编码!

0
投票

我想通过建议 mkcert

https://github.com/FiloSottile/mkcert
来跟进 Christi Maris 的回答。它的用途与
minica
基本相同,但会自动将证书添加到系统信任存储(以及可选的 Firefox 信任存储)。

来自

mkcert
文档:

mkcert 是一个用于制作本地信任的开发证书的简单工具。无需配置。

在 macOS 上,使用 Homebrew

brew install mkcert
brew install nss # if you use Firefox

mkcert
也适用于 LinuxWindows

$ mkcert -install
Created a new local CA 💥
The local CA is now installed in the system trust store! ⚡️
The local CA is now installed in the Firefox trust store (requires browser restart)! 🦊

$ mkcert example.com "*.example.com" example.test localhost 127.0.0.1 ::1

Created a new certificate valid for the following names 📜
- "example.com"
- "*.example.com"
- "example.test"
- "localhost"
- "127.0.0.1"
- "::1"

The certificate is at "./example.com+5.pem" and the key at "./example.com+5-key.pem" ✅

我一直在测试 Flask 应用程序,使用

flask run --debug --cert=adhoc
将其作为 https 运行,每次加载页面时,我都必须点击 Safari 关于不安全网站的警告。一旦我按照上述方式运行 mkcert,我就能够运行

flask run --debug --cert=/Users/username/example.com+5.pem --key=/Users/username/example.com+5-key.pem

我的网站加载为 https,没有任何警告。

© www.soinside.com 2019 - 2024. All rights reserved.