Node.js 本地主机的 https 服务器
Node.js https server for localhost
我已关注这篇文章:https://flaviocopes.com/express-https-self-signed-certificate/
用于创建用于本地主机测试我的 node.js 应用程序的自签名证书。
但是不行:
node.js `v16.3.0`
openssl `(1.1.1f-1ubuntu2.3)` - `windows linux subsystem`
当我在浏览器中输入 https://localhost:3000
时出现错误:
localhost uses an unsupported protocol. ERR_SSL_VERSION_OR_CIPHER_MISMATCH
当我做测试时 curl -v https://localhost:3000
它给了我这个:
* Trying 127.0.0.1:17001...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 17001 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS alert, handshake failure (552):
* error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure
* Closing connection 0
curl: (35) error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure
我的代码:
const https = require('https')
const app = express()
app.get('/', (req, res) => {
res.send('Hello HTTPS!')
})
https.createServer({
key: fs.readFileSync('server.key'),
cert: fs.readFileSync('server.cert')
}, app).listen(17001, () => {
console.log('Listening...')
})
那篇(以及其他文章)文章包含错误,我猜只针对最新版本的 node.js。
读取文件时需要添加编码选项{encoding: "utf8"}
如下:
https.createServer({
key: fs.readFileSync('server.key', {encoding: "utf8"}),
cert: fs.readFileSync('server.cert', {encoding: "utf8"})
}, app).listen(17001, () => {
console.log('Listening...')
})
我已关注这篇文章:https://flaviocopes.com/express-https-self-signed-certificate/ 用于创建用于本地主机测试我的 node.js 应用程序的自签名证书。
但是不行:
node.js `v16.3.0`
openssl `(1.1.1f-1ubuntu2.3)` - `windows linux subsystem`
当我在浏览器中输入 https://localhost:3000
时出现错误:
localhost uses an unsupported protocol. ERR_SSL_VERSION_OR_CIPHER_MISMATCH
当我做测试时 curl -v https://localhost:3000
它给了我这个:
* Trying 127.0.0.1:17001...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 17001 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS alert, handshake failure (552):
* error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure
* Closing connection 0
curl: (35) error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure
我的代码:
const https = require('https')
const app = express()
app.get('/', (req, res) => {
res.send('Hello HTTPS!')
})
https.createServer({
key: fs.readFileSync('server.key'),
cert: fs.readFileSync('server.cert')
}, app).listen(17001, () => {
console.log('Listening...')
})
那篇(以及其他文章)文章包含错误,我猜只针对最新版本的 node.js。
读取文件时需要添加编码选项{encoding: "utf8"}
如下:
https.createServer({
key: fs.readFileSync('server.key', {encoding: "utf8"}),
cert: fs.readFileSync('server.cert', {encoding: "utf8"})
}, app).listen(17001, () => {
console.log('Listening...')
})