我按照下面的教程创建了一个https服务器 https://docs.nodejitsu.com/articles/HTTP/servers/how-to-create-a-HTTPS-server/
并且程序运行无错误
但是当我无法在我的Chrome中打开https://localhost:8000时
总是得到ERR_SSL_PROTOCOL_ERROR
答案 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社区教程的文章很棒:
如果你想听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 的步骤。
对于 Windows,只需解压缩文件并打开它。它将在 cmd 中运行。
对于 Ubuntu GNOME,您可能可以直接在终端中运行该文件。
对于 Lubuntu(或者如果以前对您不起作用)。 移动文件如下:
mv "path/to/ngrok" "/usr/bin/"
如果文件是直接在终端或 cmd 中打开的。将您在 ngrok 上的配置文件中的命令复制并粘贴到 cmd 或终端中。命令如下所示:
./ngrok authtoken <your_auth_token>
如果您使用的是 Lubuntu,或者文件没有直接在终端中打开。更改目录如下:
cd "/usr/bin/"
然后将您在 ngrok 上的配置文件中的命令复制并粘贴到终端中。命令如下所示:
./ngrok authtoken <your_auth_token>
运行你的服务器。 Nodejs 或你通常使用的。
如果您仍然在与 '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.
链接看起来像这样:https://12fab5c82c57.ngrok.io
下次你必须这样做。只需重复步骤 4、5 和 6。
答案 6 :(得分:-1)
您需要做两件事:
设法在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")
sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" "/private/tmp/certs/certname.cer"