如何在localhost上创建https服务器

Lit*_*lee 34 ssl https localhost

我按照下面的教程创建了一个https服务器 https://docs.nodejitsu.com/articles/HTTP/servers/how-to-create-a-HTTPS-server/

程序运行没有错误

但是当我无法在我的chrome中打开https:// localhost:8000

它总是得到一个 ERR_SSL_PROTOCOL_ERROR

在此输入图像描述

小智 24

一个快速的方法是使用ngrok.

它非常易于使用,只需几秒钟即可运行.它就像下载您的系统版本一样简单.解压缩并运行ngrok.exe.它将打开命令行类型的窗口.确保您的Apache服务器或您使用的服务器正在运行.

然后,只监听HTTPS隧道端点,运行以下命令

ngrok http -bind-tls=true site.dev:80
Run Code Online (Sandbox Code Playgroud)

或者您需要https安装的任何端口.

打开浏览器并键入https://localhost/myApp您将看到它的工作原理.

如果你输入http://localhost/myApp它也有效.

希望这对于快速解决方案的任何人都有帮助.

  • 什么是site.dev在这里? (10认同)
  • 在 Windows 上运行此命令会给出“未知标志:--bind-tls”,有人知道如何解决这个问题吗? (4认同)

Ioa*_*nna 10

你需要做两件事:

  • 生成自签名 SSL 证书并
  • 将其添加到受信任的证书中

设法在 macOS 上做到这一点,如下所示:

openssl req -x509 -out localhost.crt -keyout localhost.key \
  -newkey rsa:2048 -nodes -sha256 \
  -subj '/CN=localhost' -extensions EXT -config <( \
   printf "[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")
Run Code Online (Sandbox Code Playgroud)
  • 要将证书添加到受信任的证书中,请运行以下命令(在此博客上建议):
sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" "/private/tmp/certs/certname.cer"
Run Code Online (Sandbox Code Playgroud)

  • 抱歉,否决是由于 macOS 特定解决方案造成的吗?我认为在其他操作系统上找到实现这一目标的方法是很简单的,有一个例子。我应该使响应独立于操作系统吗? (2认同)
  • 如果不是这个问题,如果我错了,请告诉我,这样我就不会犯同样的错误...... (2认同)

nem*_*emo 9

我使用Caddyserver和config这样:

:443
tls self_signed
Run Code Online (Sandbox Code Playgroud)


Lit*_*lee 7

我终于设置了 create-react-app https 开发服务器

我这样做的原因是为了在移动设备上测试设备运动 API。

安装 mkcert https://github.com/FiloSottile/mkcert

brew install mkcert

mkcert -install
Run Code Online (Sandbox Code Playgroud)

生成证书文件。

mkcert -key-file ./.cert/key.pem -cert-file ./.cert/cert.pem "<LAN_IP_ADDRESS>"
Run Code Online (Sandbox Code Playgroud)

使用 LAN IP 地址而不是“localhost”,因为我们将在连接到同一 WiFi 的移动设备上打开 https 页面。

创建一个.env文件来设置环境变量

HTTPS=true
SSL_CRT_FILE=./.cert/cert.pem
SSL_KEY_FILE=./.cert/key.pem
Run Code Online (Sandbox Code Playgroud)

启动开发服务器

HTTPS=true
SSL_CRT_FILE=./.cert/cert.pem
SSL_KEY_FILE=./.cert/key.pem
Run Code Online (Sandbox Code Playgroud)

最后但并非最不重要的一点是,在移动设备上安装证书文件,.pem生成的文件mkcert位于~/Library/Application Support/mkcert我的情况下。

在 Android 设备上安装 cert 文件

https://support.google.com/pixelphone/answer/2844832?hl=en

在 iOS 设备上安装 cert 文件

在静态服务器上提供.pem文件,并在 Safari 上打开文件地址


Mik*_*kec 6

如果这是用于测试并且您不需要有效的证书(因为您使用"localhost"似乎就是这种情况),您可以使用"自签名"证书,只需确保将nginx配置为指向对那些.

我可以解释一下细节,但实际上有一篇关于Digital Ocean社区教程的文章:

https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-nginx-in-ubuntu-16-04

如果你想听8000,请务必调整端口(443).


小智 5

一个非常简单的方法是使用 local-ssl-proxy

    npm i -g local-ssl-proxy

    local-ssl-proxy --source 3001 --target 3000
Run Code Online (Sandbox Code Playgroud)