• SSL 安全协议 以及 如何认证


    ssl安全协议(Secure Sockets Layer 安全套接层) 以及 认证

    什么是协议

    平时访问网页的时候,默认都是访问的 http 协议,比如 http://abc.cn 即便在地址栏没有明确写 http, 只写了一个 abc.cn, 实际上浏览器也会自动补充上 http:// 的。

    http 就是协议的名称。 协议是什么概念? 就是浏览器和服务端事先约定好的规则,按照预定的规则,服务器和浏览器之间能够互相理解。

    http 协议的缺陷,这里主要谈安全方面的缺陷。 http 协议是明文传输的,无论数据,账号,密码都是在网络上明文传输的,所以就存在巨大的安全隐患。一个是容易泄露密码,再一个容易被劫持,效果就是访问 http://abc.cn 的时候,会跳转到不可预知的网站去。

    http劫持

    用户要获取 abc.cn的数据,是不会直接从 服务器上去取的。

    首先找运营商,然后运营商去把数据取出来,取出来之后,再发给用户。

    目前有3个主要的运营商(移动,电信,联通),他们就扮演者中介的角色。

    一般说来,这个中介什么都不会做,把从阿里云拿到的数据,返回给用户就完了。

    但是,如果有黑客,或者运营商内部不可描述的原因,拿到的数据被动了手脚,那么再发给用户的数据,就不是原来的数据了。

    abc.cn 被劫持,就是本应该返回正常的 html, 但是却被粗暴地修改成了下面这样:

    <html>
    <body>
    <script>location.href="不可预知.com"</script>
    </body>
    </html>
    

    ssl是什么

    因为 http 是明文传输的,所以很容易就被纂改, 于是就出现了被劫持的现象。

    为了解决这个问题,我们需要在 http 协议上做一个增强,这个增强方式就是 进行 ssl 认证。 认证完成之后, http 协议就变成了 https协议啦。

    https 协议从理论上来讲也会和 http 一样会被纂改,但是其难度和代价就是指数级别的上升了,所以从概率上来讲,再出现被劫持的现象就小了很多很多啦

    ssl 证书

    概念

    要进行ssl 认证,就需要先有 ssl 证书(这个证书最好是被广泛认可的权威机构颁发的,这样大家才信任它。)。

    3种类型ssl 证书

    域名验证型(DV)SSL证书

    证书名称:域名型SSL证书(Domain Validation SSL Certificate)
    适合对象:中小型企业网站、中小型电子商务网站、电子邮局服务器、个人网站等

    组织验证型(OV)SSL证书

    证书名称:企业型 SSL 证书(Organization Validation SSL Certificate)
    适合对象:企业网站、电子商务网站、证券、金融机构

    扩展验证型(EV)SSL证书

    证书名称:增强型 SSL 证书(Extended Validation SSL Certificate )
    适合对象:银行、保险、金融机构、电子商务网站、大型企业

    DV最简单,也有免费的,EV和OV都必须是付费的,费用高昂。

    DV免费渠道:通过权威机构申请,比如 Symantec 赛门特克

    ssl认证:阿里云免费认证

    免费地址:https://common-buy.aliyun.com/?spm=5176.2020520163.cas.3.342dbsGJbsGJeT&commodityCode=cas#/buy

    1. 选择免费型 DV SSL, 自动选择 Symantic
    2. 进入阿里云控制台,左边的产品与服务-> 搜搜 ssl -> 就出来 SSL 证书(应用安全)了。
    3. 看到未签发的证书,点击 证书申请
    4. 填写基本信息,其他选项默认
    5. DNS 验证:域名解析里填写域名授权验证类型、记录类型、主机记录、记录值
    6. 等待审核通过
    7. 下载证书:在已签发栏目里,选择服务器的证书(选择Tomcat 和 Nginx)下载

    配置 Nginx的ssl认证

    nginx的ssl证书(一般有两个文件)

    123456_abc.cn.key
    123456_abc.cn.pem
    

    把证书复制到 nginx 根目录下

    配置 nginx.conf

    server {
        listen:80;
        listen 443 ss1;
        server_name localhost;
        ssl_certificate E://chrome_ down1oad//nginx//123456_abc.cn.pem; # 这个是证书的crt文件所在目录
        ssl_certificate_key E://chrome_ download/ /nginx//123456_abc.cn.key; # 这个是证书key文件所在目录
    

    修改host文件(添加)

    C:WindowsSystem32driversetc

    127.0.0.1 abc.cn

    重启访问nginx

    配置Tomcat的ssl认证

    tomcat的ssl证书(一般有两个文件)

    123456_abc.cn.pfx
    pfx-password.txt
    

    复制证书

    把证书(pfx 文件)复制到 tomcat/conf/cert 目录下(cert 目录手动创建cert 目录)

    配置 server.xml(修改)

    节点下,主要有两个改动:

    1. keystoreFile 要指定 pfx 的路径。
    2. keystorePass使用 pfx-password.txt文件里的密码
    	<Connector port="443"
    		protocol="HTTP/1.1"
    		SSLEnabled="true"
    		scheme="https"
    		secure="true"
    		keystoreFile="F:/chrome_download/tomcat/conf/cert/2992871_how2j.cn.pfx"
    		keystoreType="PKCS12"
    		keystorePass="pfx-password.txt文件里的密码"
    		clientAuth="false"
    		SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
    		ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"/>
    

    修改host文件(添加)

    C:WindowsSystem32driversetc

    127.0.0.1 abc.cn

    重定向 localhost/a.jsp 问题

    重定向写的是 /a.jsp, 那么就会跑到 http://localhost/a.jsp 这个地方去了,就不再是访问的 https://localhost/a.jsp。

    修改 server.xml(节点修改)

    在80端口对应的 Connector 这里,增加下面4个。

    secure="true" 
    scheme="https" 
    proxyPort="443"
    redirectPort="443" 
    

    重启访问

  • 相关阅读:
    Webservise如何Webservise实现打印
    GridView和FormView中对时间的末尾处理
    WebService系统结构设计
    Panel的用法
    Div+CSS选项卡
    java运行环境配置
    电子商务购物车
    电子商务配置管理
    电子商务订单生成
    spring+redis+mysql做缓存操作 look
  • 原文地址:https://www.cnblogs.com/mumuyinxin/p/12040977.html
Copyright © 2020-2023  润新知