SSL 认证

前言

  • 平时访问网页的时候,默认都是访问的 http 协议,http 协议的缺陷,这里主要谈安全方面的缺陷。

  • http 协议是明文传输的,无论数据,账号,密码都是在网络上明文传输的,所以就存在巨大的安全隐患。一个是容易泄露密码,再一个容易被劫持。

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

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

  • SSL/TLS 安全评估

  • SSL 快速入门

1、SSL 证书

  • 就如同驾驶证一样,有了这个才能证明自己具备安全驾驶的基本素质。而不是自己说自己是安全的就行了。

  • 所以要让网站支持 SSL,也需要去申请一个 SSL 认证,有了之后才表示本网站的所谓安全是被认可的。

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

1.1 证书种类

  • SSL 证书 简单说有三种:DV、OV、EV。
种类 证书名称 适合对象 是否免费
DV 域名验证型 SSL 证书(Domain Validation SSL Certificate) 中小型企业网站、中小型电子商务网站、电子邮局服务器、个人网站等 最简单,也有免费的
OV 组织验证型 SSL 证书(Organization Validation SSL Certificate) 企业网站、电子商务网站、证券、金融机构 都是必须付费的
EV 扩展验证型 SSL 证书(Extended Validation SSL Certificate) 银行、保险、金融机构、电子商务网站、大型企业 都是必须付费的

1.2 权威机构

  • DV 类型的 SSL 证书甚至是可以个人申请的,但是在部署成功之后,访问网站依然会出现警告页面。

  • 所以即便是申请 DV 类型也应当通过权威机构申请,比如 Symantec 赛门特克。

1.3 阿里云免费认证

2、Nginx 配置

  • Nginx 下 SSL 证书配置

    • 下载证书

      1
      2
      2992871_qianchia.com.pem
      2992871_qianchia.com.key
    • 把证书复制到 nginx 的根目录下。

    • 在 listen 80; 下面增加 3 行代码。

      1
      2
      3
      listen 443 ssl;
      ssl_certificate F://chrome_download//nginx//2992871_qianchia.com.pem; # 这个是证书的 crt 文件所在目录
      ssl_certificate_key F://chrome_download//nginx//2992871_qianchia.com.key; # 这个是证书 key 文件所在目录
  • 访问 localhost 出现警告问题

    • 是因为 域名是 localhost 与证书里所写 真实域名 不一致导致的。

3、Tomcat 配置

  • Tomcat 下 SSL 证书配置

    • 下载证书

      1
      2
      2992871_qianchia.com.pfx
      pfx-password.txt
    • 把证书复制到 tomcat/conf/cert 目录下。只用复制 pfx 文件。cert 目录本身不存在,需要自己创建。

    • 配置 server.xml

      1
      2
      3
      4
      5
      6
      7
      8
      <Connector port="443"
      protocol="HTTP/1.1"
      SSLEnabled="true"
      scheme="https"
      secure="true"
      keystoreFile="F:/chrome_download/tomcat/conf/cert/2992871_how2j.cn.pfx" <!-- 指定 pfx 的路径 -->
      keystoreType="PKCS12"
      keystorePass="密码" <!-- 使用 pfx-password.txt 文件里的密码 -->
  • 访问 localhost 出现警告问题

    • 是因为 域名是 localhost 与证书里所写 真实域名 不一致导致的。
  • 重定向

    • 要在 80 端口对应的 Connector 这里,增加下面 4 个,redirectPort 可能本身是存在的,并且值是 8443,需要修改为 443。

      1
      2
      3
      4
      5
      6
      7
      <Connector port="80"
      protocol="HTTP/1.1"

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

4、Websocket 配置

  • 以前 WebSocket 是走 ws:// 协议,现在服务器配置 SSL 认证了,ws:// 协议走不通了。

  • 直接把 ws:// 协议修改成 wss:// 就好了。

文章目录
  1. 1. 前言
  2. 2. 1、SSL 证书
    1. 2.1. 1.1 证书种类
    2. 2.2. 1.2 权威机构
    3. 2.3. 1.3 阿里云免费认证
  3. 3. 2、Nginx 配置
  4. 4. 3、Tomcat 配置
  5. 5. 4、Websocket 配置
隐藏目录