我们有一个PHP平台作为AWS SNS服务的客户端。我们使用NGINX作为后端Apache 2的代理。
通过端口80(HTTP)发送通知时,此方法工作正常。我们最近实施了SSL证书,以更好地模拟我们的生产环境。我们在AWS SNS控制台中使用HTTPS协议进行了新的订阅,但是订阅消息从未到达PHP后端。它在途中某处被阻塞。
从NGINX访问日志中,我们无法获取任何答案。我们看到以下几行我们怀疑来自SNS(IP解析到Amazon网络内部的某个位置)
54.240.197.67 - - [10/Feb/2014:10:49:42 +0000] "-" 400 0 "-" "-"
54.240.197.2 - - [10/Feb/2014:10:50:03 +0000] "-" 400 0 "-" "-"
62.75.187.88 - - [10/Feb/2014:10:50:07 +0000] "-" 400 0 "-" "-"
54.240.197.65 - - [10/Feb/2014:10:50:23 +0000] "-" 400 0 "-" "-"
54.240.197.35 - - [10/Feb/2014:10:51:48 +0000] "-" 400 0 "-" "-"
54.240.197.66 - - [10/Feb/2014:10:52:09 +0000] "-" 400 0 "-" "-"
54.240.197.35 - - [10/Feb/2014:10:52:30 +0000] "-" 400 0 "-" "-"
54.240.197.33 - - [10/Feb/2014:10:52:51 +0000] "-" 400 0 "-" "-"
我们的NGINX配置看起来像这样
listen 443;
root /var/www/example_dev/public/;
index index.php index.html index.htm;
server_name dev.example.com;
client_max_body_size 20M;
ssl on;
ssl_certificate /etc/nginx/ssl/dev.example.com/dev.example.com.crt;
ssl_certificate_key /etc/nginx/ssl/dev.example.com/dev.example.com.key;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/nginx.dev_example_com.access.log;
error_log /var/log/nginx/nginx.dev_example_com.error.log;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
}
location ~ /\.ht {
deny all;
}
我们有一种预感,我们使用的证书的CA可能不受AWS信任,但是您如何确认呢?CA PositiveSSL CA 2,根CA AddTrust外部CA根
也许问题出在NGINX配置中?
提前致谢!
更新
看来这是SSL证书问题。在将CA Root证书添加(连接)到域证书之后,SNS通知可能会到达服务器。但是,它仅命中了NGINX配置中首先列出的子域。弄乱了域的顺序后,我在配置文件中较低的子域中发现了一个错误。现在一切正常。我怀疑如果未提供,则AWS SNS不会查找CA Root证书。
看来这是SSL证书问题。在将CA Root证书添加(连接)到域证书之后,SNS通知可能会到达服务器。但是,它仅命中了NGINX配置中首先列出的子域。弄乱了域的顺序后,我在配置文件中较低的子域中发现了一个错误。现在一切正常。我怀疑如果未提供,则AWS SNS不会查找CA Root证书。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句