访问项目主页
使用NodeJS、mosca模块搭建本地HTTPS和MQTT服务器,并在微信小程序中测试连接服务器。Demo完整代码见Github ...
查看原文:Nginx 实现端口转发——星河赵博客 Summary Nginx在监听某一端口(如80端口)时,通过配置负载均衡池,根据不同的域名,将同一端口的HTTP/HTTPS请求分发到不同的端口。 实例如下: ##负载均衡池 upstream one_pool{ server 127.0.0.1:5000; } upstream two_pool{ server 127.0.0.1:6000; } ##server one server { #listenning on 80 listen 80; server_name one.poryoung.cn; #redirect to https return 301 https://$server_name$request_uri; } server { listen 443; server_name one.poryoung.cn; location / { proxy_pass http://one_pool; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } #Allow HTTPS ssl on; # Let's Encrypt生成的SSL证书: ssl_certificate /.../*.poryoung.cn/fullchain.cer; ssl_certificate_key /.../*.poryoung.cn.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; } ##server two server { #listenning on 80 listen 80; server_name two.poryoung.cn; #redirect to https return 301 https://$server_name$request_uri; } server { listen 443; server_name two.poryoung.cn; location / { proxy_pass http://two_pool; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } #Allow HTTPS ssl on; # Let's Encrypt生成的SSL证书: ssl_certificate /.../*.poryoung.cn/fullchain.cer; ssl_certificate_key /.../*.poryoung.cn.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; } 其中的域名和证书部分需要替换。 Let's Encrypt已经支持泛域名证书申请,网上有许多教程,比较详细的如Let’s Encrypt免费泛域名证书申请教程步骤,使用ACME.sh申请。 在申请过程中,./acme.sh --issue -d *.xxorg.com -d xxorg.com --dns和./acme.sh --renew -d *.xxorg.com -d xxorg.com命令可能会遇到dns manual mode警告而失败的情况,在其后加上--yes-I-know-dns-manual-mode-enough-go-ahead-please即可
【原文】Ubuntu 16.04安装配置Nginx使用Let's Encrypt Let’s Encrypt是新的认证授权(CA)方式,使用它可以获得免费的TLS/SSL证书-使用HTTPS加密web server。Let’s Encrypt依然在测试阶段,目前,它只支持在Apache web服务器上实现自动安装。但是,Let’s Encrypt允许我们非常容易的获得一个免费的SSL证书,之后我们可以在web服务器上手动配置安装。 本文涉及: 在Ubuntu 16.04上安装Nginx 使用Let’s Encrypt获得免费的SSL证书 配置Nginx使用SSL证书 怎么自动更新SSL证书 安装前提 你必须有一个域名 域名的A记录指向要配置的web服务器 你还要有Ubuntu 16.04的root权限 我使用test.com和www.test.com域名做示例,本文中所有涉及test.com的地方,需要替换为你的域名。 下载Let’s Encrypt客户端 首先使用Let’s Encrypt获得SSL证书,下载letsencrypt。 letsencrypt托管在github,使用git clone下载。 如果没有安装git,安装它: $ sudo apt-get update $ sudo apt-get install git 我把Let’s Encrypt clone到/opt目录: $ sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt 获得SSL证书 如果你没有安装Nginx,安装它: $ sudo apt-get install nginx 配置Nginx: $ sudo vim /etc/nginx/sites-available/default 在server块内添加: location ~ /.well-known { allow all; } /.well-known的用处:Let’s Encrypt服务器要对你的web服务器进行验证,确保是你的域名,你的服务器。 你也可以更改网站根目录,默认是/var/www/html 重新加载Nginx使更改生效: $ sudo systemctl reload nginx 获得SSL证书: $ cd /opt/letsencrypt $ ./letsencrypt-auto certonly -a webroot --webroot-path=/var/www/html -d test.com -d www.test.com 在安装过程中提示输入邮箱,用来恢复密钥 接受协议 如果成功,会输出如下信息: IMPORTANT NOTES: ... - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/test.com/fullchain.pem. Your cert will expire on 2016-06-15. To obtain a new version of the certificate in the future, simply run Let's Encrypt again. ... 注意证书保存路径和过期时间。 如果有错误,注意打开防火墙的80和443端口。 其实证书文件保存在/etc/letsencrypt/archive目录中,/etc/letsencrypt/live/test.com里的证书只是指向/etc/letsencrypt/archive最新证书的链接。获得的证书文件: sudo ls -l /etc/letsencrypt/live/test.com cert.pem: 你域名的证书 chain.pem: Let’s Encrypt chain证书 fullchain.pem: cert.pem 和 chain.pem 合并 privkey.pem: 你的证书密钥 为了增加安全,你应该生成Diffie-Hellman: $ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 下面你需要配置Nginx使用fullchain.pem做为证书文件,privkey.pem做为密钥。 配置Nginx使用TLS/SSL 现在已经有了SSL证书,下面来配置Nginx使用证书。 编辑Nginx配置文件/etc/nginx/sites-available/default: $ sudo vim /etc/nginx/sites-available/default 找到server块,注释或删除掉以下行: listen 80 default_server; listen [::]:80 default_server; 在server块内添加如下配置代码使用HTTPS: listen…