我对 AWS 的 SSL 内容并不十分熟悉,但实现这一点的一种简单方法是在您的 EC2 实例上使用 Nginx 作为 SSL 反向代理。您将使用 Nginx 设置 SSL 证书,并让 Nginx 将流量路由到您的领域对象服务器。您还可以获得监听标准端口 443(如果您愿意)的好处,并且您可以保持 9080 端口对外部流量关闭。
以下是使用 Nginx 设置反向代理的说明:https ://www.techandme.se/set-up-nginx-reverse-proxy/
以下是有关设置 WebSockets 代理(ROS 使用)的信息:https ://www.nginx.com/blog/websocket-nginx/
此外,这里是关于如何使用 Let's Encrypt(一个免费的、受信任的证书颁发机构)获取免费证书以及保持更新的指南:https ://www.digitalocean.com/community/tutorials/how-to-secure -nginx-with-let-s-encrypt-on-ubuntu-16-04
这是我使用上述所有内容的实际工作 Nginx 配置:
# Realm Object Server http to https redirection
#
server {
listen 80;
listen [::]:80;
server_name yourdomain.com;
return 301 https://yourdomain.com$request_uri;
}
# Realm Object Server reverse proxy
#
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
ssl_session_cache shared:SSL:200m;
ssl_session_timeout 180m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/yourdomain.com/chain.pem;
resolver 8.8.8.8 8.8.4.4;
add_header Strict-Transport-Security "max-age=31536000" always;
server_name yourdomain.com;
set $upstream 127.0.0.1:9080;
location / {
proxy_pass http://$upstream;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass_request_headers on;
proxy_buffering off;
client_max_body_size 0;
proxy_read_timeout 36000s;
proxy_redirect off;
proxy_ssl_session_reuse off;
}
}