在阿里云或者腾讯云上都可以获取到一年免费的证书,但审核还是比较麻烦,而且一年后还是要收费的。因此这里提供一个自己制作证书的教程。 自发证书的好处就是免费,简单不需要审核。缺点就是浏览器不认你的证书,访问时会提示这个: ![](https://box.kancloud.cn/a0384a41fc0c51a33f84e6c326e14f2e_758x568.png) 只有点击高级 ![](https://box.kancloud.cn/cc59104de631dde89c59f3f7c7c84643_651x252.png) 然后点击继续前往才能访问到网站 ![](https://box.kancloud.cn/fb27b1fd18d51b8201efce6c856943cf_371x109.png) 因此这种方式只适合用于一些接口调用,如小程序等,或者团队内部使用。 验证当前服务器是否安装了openssl: ~~~ /alidata/server/nginx/sbin/nginx -V rpm -qa | grep openssl ~~~ 查看openssl版本 ~~~ openssl version -a ~~~ 1.0.2以下的版本就要升级,之前的版本官方都已经停止维护,升级方法见下一章节:[openssl升级到1.02](OpenSSL升级到1.02.md) 创建证书 ~~~ cd /root openssl genrsa -out cert.key 2048 openssl req -new -x509 -key cert.key -out cert.pem ~~~ ![](https://box.kancloud.cn/65f01e08d2e0c93fdf81e5f88045705b_637x282.png) 创建https文件 ~~~ cd /alidata/server/nginx/conf/vhosts vi safe.conf ~~~ 在safe.conf 增加以下内容: ~~~ server { listen 443; server_name safe.weiphp.cn; index index.php; root /htdocs/safe; ssl on; ssl_certificate /root/cert.pem; ssl_certificate_key /root/cert.key; ssl_session_timeout 5m; ssl_protocols SSLv1.2 SSLv1.1 TLSv1; ssl_prefer_server_ciphers on; location ~ \.php { #fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_pass 127.0.0.1:9000; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi.conf; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 1h; } access_log /alidata/log/nginx/access/safe.log; } ~~~ 然后保存退出 ~~~ :wq ~~~ 最后重启nginx: ~~~ /etc/init.d/nginx reload ~~~ 查看当前服务器的防火墙是否已经开启: 如果显示下面的提示说明没开启,这样的话这一步略过 ![](https://box.kancloud.cn/114d15ec8202533ed31dac71ac603de0_477x32.png) 如果已经开启,需要把443端口设置为开放状态: ~~~ iptables -I INPUT -p tcp --dport 443 -j ACCEPT service iptables save ~~~ 最后把上面的域名(safe.weiphp.cn)配置指向到当前服务器,然后在/htdocs/safe目录下部署我们之前的WeiApp(原名weicms)系统代码或者自己的系统代码就可以了 如果在小程序开发工具里提示这个错误: ~~~ 小程序要求的 TLS 版本必须大于等于 1.2 ~~~ ![](image/screenshot_1483688205718.png) 只需要在开发环境,项目---》勾选不校验即可 ![](image/screenshot_1483688333247.png)