我的设置是这样的
ngnix(aws) -> tomcat 服务器(在同一个 aws 服务器上)
$ nginx -v
nginx 版本:nginx/1.14.0 (Ubuntu)
$ openssl 版本
OpenSSL 1.1.0g 2017 年 11 月 2 日
$ lsb_release -a
没有可用的 LSB 模块。
分销商 ID:Ubuntu
描述:Ubuntu 18.04.1 LTS
发行版:18.04
代号:bionic
/etc/nginx/conf.d/myapp.conf 的内容
server {
listen 80;
server_name myapp.com;
return 301 https://$server_name$request_uri;
}
server {
listen *:443 ;
ssl on;
ssl_certificate /tmp/nginx.crt;
ssl_certificate_key /tmp/nginx.key;
server_name myapp.com;
access_log /var/log/nginx/myapp.access.log;
error_log /var/log/nginx/myapp.error.log;
location / {
proxy_pass http://localhost:8764;
}
}
当我尝试从浏览器访问 myapp 时,我得到了ERR_SSL_VERSION_OR_CIPHER_MISMATCH
有人建议我尝试使用 OpenSSL 进行连接,
openssl s_client -connect myapp.com:443
CONNECTED(00000003)
140211097622168:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:s23_clnt.c:769:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 305 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : 0000
Session-ID:
Session-ID-ctx:
Master-Key:
Key-Arg : None
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1533215612
Timeout : 300 (sec)
Verify return code: 0 (ok)
---
有人能指出这里的问题是什么吗?
答案1
您需要指定服务器名称,例如:
openssl s_client -servername myapp.com -connect myapp.com:443
您在连接中提供的 IP 地址会被解析为 IP 地址,并且服务器永远不会看到它。因此服务器不知道要使用什么证书。我忽略了“AWS”。您为 myapp.com 获取的 IP 地址可能被数百或数千个系统使用。