我有以下问题。我尝试创建一个.NET Core Web-API和一个Vue-SPA前端。
为此,我将Nginx用作Windows计算机上的服务器。
为此.NET为我生成一个SSL证书。这是在文件夹自己的证书的certmgr中生成的。
要为Nginx生成证书,我导出了此生成的文件,并按照此guid对其进行了转换。
https://blog.knoldus.com/easiest-way-to-setup-ssl-on-nginx-using-pfx-files/
所以我得到了cert.crt和cert.rsa。他们都关闭了,我正在使用Ngnix。对于Web-API,一切正常。但是在前端我总是会收到以下错误
sockjs.js?9be2:1605 GET https://192.168.178.145:8081/sockjs-node/info?t=1552754433422 net :: ERR_CERT_COMMON_NAME_INVALID
因此webpack-dev-server无法连接。但我不知道为什么。在这种情况下我做错了什么?
这是我的Nginx配置
server {
listen 58000 ssl;
server_name localhost;
ssl_certificate domain.crt;
ssl_certificate_key domain.rsa;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
#proxy_buffering off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header X-NginX-Proxy true;
proxy_pass https://localhost:8081/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /api {
proxy_pass https://127.0.0.1:5001;
}
}
在我的webpack-dev-server中,我正在使用以下
module.exports = {
devServer: {
https: {
key: fs.readFileSync('path\\domain.rsa'),
cert: fs.readFileSync('path\\domain.crt'),
}
}
}
对我来说,证书似乎有一些问题。但是为什么它只在websocket上失败而不在其他地方失败?
对不起,我是SSL和Nginx的新手。
答案 0 :(得分:2)
sockjs.js?9be2:1605 GET https://192.168.178.145:8081/sockjs-node/info?t=1552754433422 net :: ERR_CERT_COMMON_NAME_INVALID
这表明您使用192.168.178.145
作为主机名
server_name localhost;
这表明nginx需要localhost
作为主机名
ssl_certificate domain.crt;
目前尚不清楚您在证书中配置的真实名称,但很有可能不是192.168.178.145
。因此就是错误。
listen 58000 ssl;
这表明您的nginx正在侦听端口5800。错误消息中的URL而是端口8081。这可能表明您显示的nginx配置与实际访问的服务器无关-我已经不知道端口8081上有什么服务器。