网站一定要安装SSL证书吗?答案是肯定的。如今越来越多的网站都进行了SSL证书的安装,因为越来越多的人已经了解了它的重要性,保障数据安全绝不是危言耸听。
网站在没有安装SSL证书之前,是通过http进行访问的,数据以明文的形式进行传输。这种传输方式就等于把我们的个人数据在网络上裸奔,不怀好意的人就能将我们的个人数据信息进行窃取或者篡改。而安装完SSL证书之后通过https加密传输就非常安全了。
没安装SSL证书之前,浏览器直接告诉你这是个不安全的链接,这时候用户心里一惊,就赶紧退出了你的小破站。
那么安装SSL证书的好处有哪些?
1、建立加密的信息通道,防止数据被第三方窃取和篡改。
2、保护数据内容的完整性。
3、通过证书等信息确认网站的真实性,提高公司品牌形象和可信度。
而且像现在小程序的开发、微信公众号api的调用、第三方支付的回调接口就要求你的后端url必须是https的请求,所以赶紧把证书装上吧。
在阿里云网站上购买SSL证书,我买的是免费版,一年一换
2.下载证书,并在服务器nginx的安装目录conf下,新建cert,将证书上传到该目录下
cd /usr/local/nginx/conf #进入Nginx默认安装目录。如果您修改过默认安装目录,请根据实际配置进行调整。
mkdir cert #创建证书目录,命名为cert。
3.编辑nginx.conf配置文件,加入以下代码并修改
#以下属性中,以ssl开头的属性表示与证书配置有关。
server {
listen 443 ssl;
#配置HTTPS的默认访问端口为443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
#如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
server_name yourdomain.com; #需要将yourdomain.com替换成证书绑定的域名。
root html;
index index.html index.htm;
ssl_certificate cert/cert-file-name.pem; #需要将cert-file-name.pem替换成已上传的证书文件的名称。
ssl_certificate_key cert/cert-file-name.key; #需要将cert-file-name.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; #表示使用的TLS协议的类型。
ssl_prefer_server_ciphers on;
location / {
root html; #站点目录。
index index.html index.htm;
}
}
我修改后的nginx配置
server {
listen 443 ssl;
#配置HTTPS的默认访问端口为443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
#如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
server_name www.yzfree.com;
#需要将yourdomain.com替换成证书绑定的域名。
root html;
index index.html index.htm;
ssl_certificate cert/5452872_www.yzfree.com.pem; #需要将cert-file-name.pem替换成已上传的证书文件的名称。
ssl_certificate_key cert/5452872_www.yzfree.com.key; #需要将cert-file-name.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; #表示使用的TLS协议的类型。
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://localhost;
}
}
4.重启nginx,如果报错,按照他的提示需要重新编译Nginx并在编译安装的时候加上–with-http_ssl_module配置
按照以下步骤添加http_ssl_module模块
1.切换到源码包下
# cd /usr/local/src/nginx-1.6.2
2.生成makefile:
# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
3.配置完成后,运行命令编译:
# make
make命令执行后,不要进行make install,否则会覆盖安装。
4.备份原有已安装好的nginx:
# cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
5.停止nginx状态:
# /usr/local/nginx/sbin/nginx -s stop
6.将编译好的nginx覆盖掉原有的nginx:
# cd /usr/local/src/nginx-1.6.2
# cp ./objs/nginx /usr/local/nginx/sbin/
7.提示是否覆盖,输入yes即可。
8.然后启动nginx:
# /usr/local/nginx/sbin/nginx
9.进入nginx/sbin目录下,通过命令查看模块是否已经加入成功:
# cd /usr/local/nginx/sbin/
# ./nginx -V
10.显示以下信息,则证明已经编译成功:
nginx version: nginx/1.6.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
安装完SSL证书可以消除浏览器的“不安全”的警告,取而代之的https访问而且有挂锁图标,明确告诉用户咱这个链接是非常安全的,这能向用户表明与该网站的交互数据是高强度加密传输的,不会被第三方截取和篡改的。然后用户就能放心的在你的网站上买买买了。
因为单纯的使用对称加密或非对称加密算法,不法分子都可以通过替换网站发送的公匙从而对客户端发送的数据进行解密篡改,为了解决这个隐患才引入了数字证书的概念。
我们从阿里云上下载的SSL证书就是一套属于我们网站的公私钥。阿里云就相当于是个中间人(CA)也拥有自己的一套公私钥,然后CA就用自己的私钥对我们的网站公钥和用户信息hash后进行加密,得到“数字证书的签名”。
同时,受信任CA的公匙会事先置于用户所使用的浏览器中,每次用户通过浏览器访问我们的网站时,网站将数字证书(网站的公钥)和“数字证书的签名”发送给用户,用户浏览器通过CA提供的公钥解密数字证书的签名得到hash值,再将数字证书的明文进行hash,如果这两个hash匹配则可以确认数字证书的有效性,而后才会对数据非对称加密进行传输访问我们的网站服务器。而不法分子因为没有CA的私钥,无法伪造CA颁发的“数字证书的签名”,也就无法替换网站发送给用户的数字证书(网站的公钥)了。
假如不法分子使用自己生成的私钥给网站的公钥、网站用户身份信息的hash进行加密,生成假的数字证书的签名,那么浏览器在使用CA提供的公钥解密“数字证书的签名”时将得到不匹配的hash值,就能得知数字证书是伪造的。
扫一扫,跟我一起学习