我想用https啓動我的Web應用程序。我創建了自簽名密鑰和證書使用下面的命令:Express JS,使用HTTPS不會加載頁面
openssl req -newkey rsa:2048 -sha256 -nodes -keyout key.key -x509 -days 365 -out public.pem -subj "/C=US/ST=New York/L=Brooklyn/O=Example Brooklyn Company/CN=my.example.com"
這創造了我key.key
NAD public.pem
文件。
現在我想將它們分配給我的Express應用程序:
const app = express();
const https = require('https');
const http = require('http');
const fs = require('fs');
app.get('/*', (req, res) => {
res.send("Hello");
});
const options = {
key: fs.readFileSync(`${__dirname}/key.key`), // Path to file with PEM private key
cert: fs.readFileSync(`${__dirname}/public.pem`) // Path to file with PEM certificate
};
https.createServer(options, app).listen(443);
http.createServer(app).listen(80);
當我打開我的my.example.com/
它成功地顯示我Hello
消息文本。 不管怎樣,當我像這樣打開它https://my.example.com/
我的瀏覽器不打開此頁面並顯示ERR_SSL_PROTOCOL_ERROR
錯誤消息。
我錯過了什麼?
是什麼'options'? – baao
@baao哎呀。我已更新我的問題 –
如果指定了編碼選項,則fs.readFileSync會返回一個字符串,否則會返回一個緩衝區。因此,您需要指定編碼以將內容作爲字符串獲取。 – baao