首页 > 代码库 > 如何让lnmpa网站 全站https

如何让lnmpa网站 全站https

 

使用场景 (腾讯云+lnmp一键安装包+wp) 其他的也可以效仿 


Https优势

1. 防流量劫持

全站Https是根治运营商、中间人流量劫持的解决方案,不仅可以杜绝网页中被插入的小广告,更可以保护用户隐私安全。

2. 提升搜索排名

采用Https可以帮忙搜索排名的提升,提高站点的可信度和品牌形象。

3. 杜绝钓鱼网站

Https地址栏绿色图标可以帮助用户识别出钓鱼网站,保障用户和企业的利益不受损害,增强用户信任。


首先先从网络服务厂商下载ssl证书
例如
www.xxx.com.key
www.xxx.com.crt

解释:

SSLEngine :启用SSL功能

SSLCertificateFile:证书文件

SSLCertificateKeyFile:私钥文件

SSLCertificateChainFile: 证书链文件 最高为ca 和域名一样 你的网站》服务商》CA

请先配置lnmpa环境 然后执行下面操作
对于lnmpa环境需要2个都配置ssl


0. 首先
    在 /usr/local/ 下建立个存放证书的文件夹
    mkdir /usr/local/crt
    把证书和key仍进去  证书可能要成份


1.nginx配置
     #http服务器
     upstream httpServer
     {
            server 127.0.0.1:88 weight=1 max_fails=2 fail_timeout=30s;
        }   
        #https服务器
        upstream httpsServer
     {
            server 127.0.0.1:442 weight=1 max_fails=2 fail_timeout=30s;
     }   


    #用户默认访问80的端口 重定向https
    server {
             listen 80;
            server_name www.dorodoro.com dorodoro.com;  
            rewrite ^(.*)$  https://$host$1 permanent; 
    } 

    server {

        listen 443 ssl;
        server_name www.dorodoro.com dorodoro.com;  
        root          /var/lnmp/www/tolotolo;
        ssl on;
        ssl_certificate /usr/local/crt/tolotolo.crt;
        ssl_certificate_key /usr/local/crt/tolotolo.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers   on;

        charset utf-8; 
        #error_page  404              /404.html;
        #error_page   500 502 503 504  /50x.html;
        #access_log  /var/lnmp/wwwlogs/tolotolo_access.log;
        error_log  /var/lnmp/wwwlogs/tolotolo_error.log;

        include proxy-pass-ssl-php.conf;           
          
        location ~ .*\.(js|css|txt)?$
        {   
 
            expires      1h;
        }
        location ~ .*\.(gif|jpg|jpeg|png|bmp|ico|mp3|mp4)$
        {   
            
            expires      3d;
        }      
    }

    把include proxy-pass-php.conf 复制份 proxy-pass-ssl-php.conf;     
    别忘了把里面 proxy_pass 修改为https://httpsServer;

2 apache配置
    找到httpd.conf
    find ssl 相关行 把前面#去了

    修改 httpd-ssl.conf

    大致和vhost相同

    注意listen 为442 根据你前面定义的服务器端口

    例子

    <VirtualHost *:442>
        ServerAdmin tolotololab@gmail.com
        ServerName www.tolotolo.cn
        ServerAlias tolotolo.cn
        DocumentRoot "/var/lnmp/www/tolotolo"
        SSLEngine on
        SSLCertificateFile /usr/local/crt/tolotolo.crt
        SSLCertificateKeyFile /usr/local/crt/tolotolo.key
        SSLCertificateChainFile /usr/local/crt/ca.crt
        #ErrorLog "/usr/local/apache/logs/error_log"
        #TransferLog "/usr/local/apache/logs/access_log"
       
         <Directory "/var/lnmp/www/tolotolo">

             AllowOverride All
             Header set Access-Control-Allow-Origin *
             Require all granted
        </Directory>
    </VirtualHost> 

3 从起lnmpa

4游览器查看是否有证书图案

注意 这样配置是保证只有1个网站 不会影响其他网站的80端口访问 如loli.dorodoro.com 如果想这个网站也https请从0继续开始

额外
如果你是wordpress 并且 安装wordpress 请注意所有的图片资源为 https//: 兼容http的话就用//: 并且在设置 常规里 http变为https 也可以老方法修改数据库吧

对于gravatar头像https 
    function.php添加 如下代码
    function get_ssl_avatar($avatar) {
    $avatar = preg_replace(‘/.*\/avatar\/(.*)\?s=([\d]+)&.*/‘,‘<img src="https://secure.gravatar.com/avatar/$1?s=100&d=mm&r=g" class="avatar avatar-50 photo"  height="50" width="50">‘,$avatar); 
    return $avatar;
    }
    add_filter(‘get_avatar‘, ‘get_ssl_avatar‘);
对于多说评论
    修改plugins 里的duoshuo里的WordPress.php
    找到embed.js的 需要美化代码
     avatarUrl: function(e) {
                    //添加https转换
                    if(typeof e.avatar_url=="string"){
                         var str=e.avatar_url+"";
                          e.avatar_url=e.avatar_url.replace(/http/ig, "https");
                    }
                    return e.avatar_url || rt.data.default_avatar_url
     }
对于百度分享

下载源码包 替换地址

小故事
理解加密 ssh(Secure Shell )
    古希腊人用一种叫 Scytale 的工具加密。更快的工具是 transposition cipher—:只是把羊皮纸卷在一根圆木上,写下信息,羊皮纸展开后,这些信息就加密完成了。

    虽然很容易被解密,但它确实是第一个在现实中应用加密的例子

    Julius Caesar 用了另外一个类似的加密方法:把字母往右或往左移动几位;此法称为Caesar’s cipher. 比如“GEEK” 加密后就是“JHHN”.

    Plain:  ABCDEFGHIJKLMNOPQRSTUVWXYZ

    Cipher: DEFGHIJKLMNOPQRSTUVWXYZABC

    因为只有信息接受者知道如何解密,对其他人来说,那就是一段无意义的信息了。

    加密算法有很多种,区别和衡量他们的方法就是看他们是否容易被破解的程度和加密的速度如 AES RSA
    绝大部分都属于以下两种加密类型之一:
    对称加密:加密解密用的是同样的“钥匙”

    非对称加密:加密解密用的是不同的“钥匙

对称加密
    Alice 在盒子里放有信息,盒子上有挂锁,她有钥匙。通过邮局她把这个盒子寄给Bob。Bob收到盒子后,用相同的钥匙打开盒子(钥匙之前就得到了,可能是Alice面对面给他的)。然后Bob可以用同样的方法回复。

非对称加密
    Bob和Alice各有自己的盒子。Alice要跟Bob秘密通信,她先让Bob把开着的盒子通过邮局发给她。Alice拿到盒子后放入信息锁上,然后发给Bob。Bob就可以用他自己的钥匙打开了。回复的话就用同样的方法。
    非对称算法在加密和解密时用的是不同的钥匙。信息接受者有两把钥匙:一把“公匙”,一把“私匙”。公匙是给信息发送者用来加密的,私匙是自己用来解密的这样最大的好处是:不必通过不安全的渠道发送私密的东西。公匙本来就是给别人用的,不用藏好。你的私匙在你产生私匙的电脑里保存着。

 

网站如何通过加密和用户安全通信 ssl
SSL (Secure Sockets Layer) 是用来保障你的浏览器和网站服务器之间安全通信,免受网络“中间人”窃取信息。SSL原理很简单。


1 当你的浏览器向服务器请求一个安全的网页(通常是 https://)
2 网站服务器就把它的证书和服务器的公匙发回来 服务器的私钥不会发来
3 浏览器检查证书是不是由可以信赖的机构颁发的,确认证书有效和此证书是此网站的 。 也就是CA证书
4 游览器使用服务器的公钥加密了一个随机对称密钥,包括加密的URL一起发送到服务器
5 网站服务器用自己的私匙解密了你发送的钥匙。然后获得你刚才游览器生成的密钥
6 网站服务器通过你发的对称钥匙给你请求的网页加密。
7 游览器在用刚才的对称密钥解密请求的网页数据    因为是对称的 而且只有你和服务器拥有  所以只有你可以和服务器沟通数据 其他人没有密钥就没法解密里面内容 安全度大大上升

如何让lnmpa网站 全站https