概述
- 什么是SSL证书
通俗的来讲SSL和TSL都是属于网络传输的安全协议,而SSL继承于TSL,且SSL是一种更为安全的加密协议。
SSL和TSL的体现:
TSL是通过浏览器以http://
来访问,默认端口是80
;
SSL是通过浏览器以https://
来访问,默认端口是443
。
- 为什么要使用SSL
- SSL更加安全
- 在使用微信小程序开发时与后台数据交互必须使用
https
传输,即SSL协议
- SSL如何获得
- 免费SSL证书有哪些
- 阿里云
- 腾讯云
这里列举两个并做详细获取的方法的描述。
获取
阿里云
- 进入阿里云的“控制台”,在左上角“产品与服务”中点击“证书服务”,如下图:
- 点击右上方的“购买证书”,进入购买页面,如下图:
- 选择“免费型DV SSL”,其他默认,即可看到右边显示“0元”,如下图:
- 点击“立即购买”->“去支付”(注册是0元)->“完成支付”,如下图:
- 点击“进入控制台”后可以看到“我的订单”中多了一条最新购买的证书信息,如下图:
- 点击“补全”完善信息,在绑定域名处输入需要绑定的域名,这里只能输入一个域名,且是公完整并不支持通配符的域名,如下图:
- 点击“下一步”完善个人信息,如下图:
在域名验证类型处需要选择DNS
或文件
进行验证,其目的是验证该域名是属于您的,选择DNS
不需要域名能正常访问,只需要在域名管理处增加CName
即可;选择文件
则需要该域名能正常访问且能在该域名下找到对应的文件。
- 最后选择“系统生成CSR”创建并提交审核即可。
- 最后一步就是验证域名,即加
CName
或上传指定文件到域名服务器下进行验证,一般CName
一个小时左右,文件
方式几分钟即可审核完成 - 审核通过后可以看到
我的订单
中证书状态为已签发
,并在操作列中有下载
链接,点击下载
可以看到下图:
- 在这里提供了
Nginx
、Apache
、Tomat
、IIS 6
、IIS 7
、IIS 8
、其他
这几种证书,也就是可以使用这几种web容器来做https
协议。 - 此时完成了阿里云的免费证书的申请。
腾讯云
- 进入腾讯云管理中心https://console.qcloud.com/
- 选择左上角“云产品”->“SSL证书管理”,如下图:
- 点击左上方“申请证书”(不是购买证书哦),如下图:
- 选择“免费版DVSSL证书”后点击“确定”,如下图:
- 填写申请信息,通用名称填写需要绑定的域名,如下图:
- 选择域名验证方式,如下图:
- 点击“确定申请”后,出现申请已提交信息,表示提交成功,如下图:
- 在证书详情里面可以看到验证方法的信息(这里选择的是DNS验证),如下图:
- 验证通过后,在列表页中可以看到“已颁发”和“下载”字样,如下图:
- 此时已完成腾讯云免费SSL证书的获取,点击“下载”即可下载证书到本地。
配置
获取到了SSL证书后的工作就是使用这些证书进行https访问。
配置方法可以参考文章:《Nginx中配置https做反向代理 - 知识林》
本文所属【知识林】:http://www.zslin.com/web/article/detail/72
http://www.zslin.com/web/article/detail/72
在Centos中的Nginx配置https做反向代理跟配置http做反向代理基本一样,只是多了ssl的相关配置,如果不知道如何在Centos中配置Nginx做反向代理可以参考文章《Centos 中安装与配置Nginx - 知识林》,如果没有支持https的SSL证书可以参考文章《阿里云和腾讯云免费SSL证书 - 知识林》来获取免费的SSL证书。
- 在Centos中配置Nginx做https的反向代理
只需要修改之前所描述的*.conf文件即可,具体内容如下:
server {
listen 80;
listen 443;
server_name c.zslin.com;
ssl on;
ssl_certificate /etc/nginx/cert/1_c.zslin.com_bundle.crt;
ssl_certificate_key /etc/nginx/cert/2_c.zslin.com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
server_name zslin.com www.zslin.com *.zslin.com;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://website:port;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect http:// $scheme://; #做https跳转
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
注意:
listen 443
:表示监听443端口,即以https提交的请求,上面的listen 80
表示同时也监听以http提交的请求;
ssl on
:表示开启SSL协议;
ssl_certificate
:指定SSL证书的crt文件路径(如果是阿里云的证书则是pem文件);
ssl_certificate_key
:指定SSL证书的key文件路径;
其他ssl开头的可以照搬;
proxy_pass
:指定代理的地址,可以是外网地址,也可以是内网地址;
proxy_redirect http:// $scheme://
:表示在程序中有redirect跳转时,将采用原有传输协议方式跳转,即如果是以https请求,在跳转后依然是https。
配置完成重启Nginx即可以https访问。
- 在Windows中配置Nginx做https的反向代理
在Windows中安装和配置Nginx其实也比较简单,进入下载地址:http://nginx.org/en/download.html,点击最新版下载,如下图:
下载后将压缩文件解压到合适的目录,可以看到如下图的目录结构:
运行nginx.exe
即可,不过这样运行不是在windows的服务中运行,这样关闭和重新启动都很不方便,也不稳定,一般建议是将Nginx做为windows服务来运行。
制作windows服务可以下载winsw
小工具来完成,解压后可以得到winsw-1.9-bin.exe,可以将该文件移动到nginx安装目录,并重命名为服务名称,如:nginx-server.exe
,创建nginx-server.xml
文件,注意这两个名称要一样,xml文件内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<service>
<id>nginx</id>
<name>nginx</name>
<description>nginx</description>
<executable>D:\java\nginx-1.11.8\nginx.exe</executable>
<logpath>D:\java\nginx-1.11.8\</logpath>
<logmode>roll</logmode>
<depend></depend>
<startargument>-p D:\java\nginx-1.11.8\</startargument>
<stopargument>-p D:\java\nginx-1.11.8\ -s stop</stopargument>
</service>
注意:将executable
、logpath
、startargument
、stopargument
这几个地方的路径修改为自己nginx的安装目录即可。
打开命令提示符窗口进入到nginx-server.exe
所在目录,键入:nginx-server.exe install
即可安装windows服务,nginx-server.exe uninstall
卸载windows服务。
现在开始配置。
在windows中Nginx的配置文件在:安装目录/conf/nginx.conf,在这个配置文件中复制一个server
来做修改,内容如下:
server {
listen 443 ssl;
server_name c.zslin.com;
ssl_certificate 1_c.zslin.com_bundle.crt;
ssl_certificate_key 2_c.zslin.com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
#root html;
#index index.html index.htm;
proxy_pass http://localhost:81;
proxy_set_header Host $host;
proxy_redirect http:// $scheme://; #做https跳转
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
注意:具体描述跟上面Centos中的一样。ssl_certificate
和ssl_certificate_key
对应值没有写路径是因为我已经将这两个文件复制到了conf所在目录。
nginx-server.exe start
:启动服务
nginx-server.exe stop
:停止服务
本文所属【知识林】:http://www.zslin.com/web/article/detail/73
http://www.zslin.com/web/article/detail/73