如何在localhost上创建https服务器

时间:2017-04-28 10:02:09

标签: 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

enter image description here

7 个答案:

答案 0 :(得分:17)

一个快速的方法是使用ngrok

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

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

ngrok http -bind-tls=true site.dev:80

或在您需要https安装的任何端口上。

打开浏览器并输入https://localhost/myApp,您会看到它有效。

如果您输入http://localhost/myApp,它也可以。

希望这有助于任何人快速解决问题。

答案 1 :(得分:8)

我使用Caddyserver配置如下:

class Achievement(models.Model):
    ...

    order = models.AutoField(default=1, primary_key=False)
    # Also specify that this autofield is *not* a ^ primary key

    class Meta:
        ordering = ['order', 'id']

答案 2 :(得分:5)

如果这是用于测试的,并且您不需要有效的证书(这似乎是因为您使用" localhost"),您可以使用&#34 ;自签名" cert,只需确保将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)。

答案 3 :(得分:2)

假设您使用的是nodejs,则http-sever-S or --ssl-C & -K一起启用https

答案 4 :(得分:2)

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

之所以这样做,是为了在移动设备上测试设备运动API。

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

brew install mkcert

mkcert -install

生成证书文件。

mkcert -key-file ./.cert/key.pem -cert-file ./.cert/cert.pem "<LAN_IP_ADDRESS>"

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

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

HTTPS=true
SSL_CRT_FILE=./.cert/cert.pem
SSL_KEY_FILE=./.cert/key.pem

启动开发服务器

npm start

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

在Android设备上安装证书文件

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

在iOS设备上安装证书文件

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

答案 5 :(得分:0)

Balloon Fight 提供的解决方案绝对是我正在寻找的,并且有效。 但是提到的命令对我不起作用,所以这对我有用。

我使用的是 Lubuntu 20.04 LTS(64 位)。

<块引用>

Lubuntu 是一个轻量级的 Linux 版本,以 Debian、Ubuntu 和 LXDE 为基础。

OSX 的步骤可能类似。还提到了 Windows 和 Ubuntu GNOME 的步骤。


  1. 转到 ngrok 并创建一个帐户。

  2. 下载 ngrok 并安装。

对于 Windows,只需解压缩文件并打开它。它将在 cmd 中运行。

对于 Ubuntu GNOME,您可能可以直接在终端中运行该文件。

对于 Lubuntu(或者如果以前对您不起作用)。 移动文件如下:

mv "path/to/ngrok" "/usr/bin/"
  1. 如果文件是直接在终端或 cmd 中打开的。将您在 ngrok 上的配置文件中的命令复制并粘贴到 cmd 或终端中。命令如下所示:

    ./ngrok authtoken <your_auth_token>

如果您使用的是 Lubuntu,或者文件没有​​直接在终端中打开。更改目录如下:

cd "/usr/bin/"

然后将您在 ngrok 上的配置文件中的命令复制并粘贴到终端中。命令如下所示:

./ngrok authtoken <your_auth_token>
  1. 运行你的服务器。 Nodejs 或你通常使用的。

  2. 如果您仍然在与 'ngrok' 文件相同的目录中。将以下命令复制并粘贴到终端或 cmd 中:

    ngrok http 3000 -host-header="localhost:3000"

3000 更改为您用于本地服务器的端口。

如果您不在 'ngrok' 文件的目录中。在终端或 cmd 中打开它。

对于 Lubuntu,使用以下命令更改目录:

cd "/usr/bin/"

然后运行命令:

ngrok http 3000 -host-header="localhost:3000"

3000 更改为您用于本地服务器的端口。

I got to know about this command from this video.

  1. 将 HTTPS 链接(在第二个“转发”行中)复制并粘贴到您的浏览器。

链接看起来像这样:https://12fab5c82c57.ngrok.io

下次你必须这样做。只需重复步骤 4、5 和 6。

答案 6 :(得分:-1)

您需要做两件事:

  • 生成自签名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")
  • 然后要将证书添加到受信任的证书,请运行以下命令(建议在this blog上使用):
sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" "/private/tmp/certs/certname.cer"