手把手教你 HTTPS 配置

Posted 程序IT圈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手把手教你 HTTPS 配置相关的知识,希望对你有一定的参考价值。

 本文来源于:Java极客技术

还记得前两天,给大家分享了一篇关于Https的安全性文章,如果没看过的可以看一下。

上次有读者说,需要整一篇关于如何Https配置的文章,今天就来了。这篇文章非常详细,只需要5分钟,就可以搞定Https的配置 。废话不多说,开始正题了。

01、关于 FreeSSL.cn

FreeSSL.cn 是一个免费提供 HTTPS 证书申请、HTTPS 证书管理和 HTTPS 证书到期提醒服务的网站,旨在推进 HTTPS 证书的普及与应用,简化证书申请的流程。


当然了,我看重的不是免费,而是 FreeSSL 使用起来非常人性化。我是一个计算机常识非常薄弱的程序员(羞愧一下),但通过 FreeSSL,我竟然可以独自完成 Tomcat 的 HTTPS 配置!


很多年以前,公司要做华夏银行的接口对接,需要 HTTPS 访问,大概花了 3000 块买的证书,最后证书还有问题,HTTPS 也没搞定。总之,坑的很!

手把手教你 HTTPS 配置


100% 永久免费;这要感谢 Let's Encrypt 与 TrustAsia 提供的免费 SSL 证书。在 HTTPS 证书到期前,FreeSSL.cn 会及时地提醒更换证书,免费的服务。

私钥不在网络中传播,确保 HTTPS 证书的安全。


02、使用 FreeSSL 申请证书

第一步,填写域名,点击「创建免费的 SSL 证书」

手把手教你 HTTPS 配置

第二步,填写邮箱,点击「创建」

手把手教你 HTTPS 配置

1)证书类型默认为 RSA

RSA 和 ECC 有什么区别呢?可以通过下面几段文字了解一下。

HTTPS 通过 TLS 层和证书机制提供了内容加密、身份认证和数据完整性三大功能,可以有效防止数据被监听或篡改,还能抵御 MITM(中间人)攻击。TLS 在实施加密过程中,需要用到非对称密钥交换和对称内容加密两大算法。


对称内容加密强度非常高,加解密速度也很快,只是无法安全地生成和保管密钥。在 TLS 协议中,应用数据都是经过对称加密后传输的,传输中所使用的对称密钥,则是在握手阶段通过非对称密钥交换而来。常见的 AES-GCM、ChaCha20-Poly1305,都是对称加密算法。


非对称密钥交换能在不安全的数据通道中,产生只有通信双方才知道的对称加密密钥。目前最常用的密钥交换算法有 RSA 和 ECDHE:RSA 历史悠久,支持度好,但不支持 PFS(Perfect Forward Secrecy);而 ECDHE 是使用了 ECC(椭圆曲线)的 DH(Diffie-Hellman)算法,计算速度快,支持 PFS。


2)验证类型默认为 DNS

DNS 和文件验证有什么区别呢?我们再来一起了解下。

首先,我们需要明白一点,CA(Certificate Authority,证书颁发机构) 需要验证我们是否拥有该域名,这样才给我们颁发证书。

DNS 验证:CA 将通过查询 DNS 的 TXT 记录来确定我们对该域名的所有权。我们只需要在域名管理平台将生成的 TXT 记录名与记录值添加到该域名下,等待大约 1 分钟即可验证成功。

所以,如果对服务器操作方便的话,可以选择文件验证;如果对域名的服务器操作比较方便的话,可以选择 DNS 验证。如果两个都方便的话,请随意选啦。


3)CSR生成默认为离线生成

离线生成、浏览器生成 和 我有 CSR 又有什么区别呢?来,我们继续了解一下。


离线生成 推荐!!!:私钥在本地加密存储,更安全;公钥自动合成,支持常见证书格式转换,方便部署;支持部分 WebServer 的一键部署,非常便捷。

Windows 的话,安装的时候要选择“以管理员身份运行”。


浏览器生成:在浏览器支持 Web Cryptography 的情况下,会使用浏览器根据用户的信息生成 CSR 文件。

Web Cryptography,网络密码学,用于在 Web 应用程序中执行基本加密操作的 javascript API。很多浏览器并不支持

我有 CSR:可以粘贴自己的 CSR,然后创建。

第三步,选择离线生成,打开 KeyManager

手把手教你 HTTPS 配置

填写密码后点击「开始」,稍等片刻,出现如下界面。

手把手教你 HTTPS 配置

第四步,返回浏览器,点击「下一步」,出现如下界面。

手把手教你 HTTPS 配置

第五步,下载文件,并上传至服务器指定目录下。

手把手教你 HTTPS 配置

第六步,点击「验证」,通过后,出现以下界面。

手把手教你 HTTPS 配置

第七步,点击「保存到KeyManager」,可以看到证书状态变成了已颁发。

手把手教你 HTTPS 配置

03、为 Tomcat 配置 jks 格式证书

第一步,导出证书。假如服务器选择的 Tomcat,需要导出 Java keystone (简拼为 jks)格式的证书。

手把手教你 HTTPS 配置

注意:私钥的密码在配置 Tomcat 的时候用到。

手把手教你 HTTPS 配置

第二步,上传证书至服务器。

手把手教你 HTTPS 配置

第三步,配置 Tomcat 的 server.xml。


<Connector port="81" protocol="HTTP/1.1"
     maxThreads="250" maxHttpHeaderSize="8192" acceptCount="100" connectionTimeout="60000" keepAliveTimeout="200000"
     redirectPort="8443"            
     useBodyEncodingForURI="true" URIEncoding="UTF-8"  
     compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata"   
      compressableMimeType="text/html,text/xml,application/xml,application/json,text/javascript,application/javascript,text/css,text/plain,text/json,image/png,image/gif"/>


<Connector
  protocol="org.apache.coyote.http11.Http11NioProtocol"
  port="443" maxThreads="200"
  scheme="https" secure="true" SSLEnabled="true"
  keystoreFile="/home/backup/qingmiaokeji.cn.jks" keystorePass="Chenmo"
  clientAuth="false" sslProtocol="TLS"
   useBodyEncodingForURI="true" URIEncoding="UTF-8"  
  compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata"   
  compressableMimeType="text/html,text/xml,application/xml,application/json,text/javascript,application/javascript,text/css,text/plain,text/json,image/png,image/gif"/>

其中 keystorePass 为导出证书时私钥的加密密码。


手把手教你 HTTPS 配置

— 完 —




手把手教你 HTTPS 配置

长按加入10W+朋友的IT圈


记得点击「在看」,然后转给你身边的朋友们。

以上是关于手把手教你 HTTPS 配置的主要内容,如果未能解决你的问题,请参考以下文章

我的 Serverless 实战—8行代码手把手教你搭建智能机器人平台

手把手教你用Unet实现语义分割(Pytorch版)

手把手教你spring源码搭建

手把手教你实战开发黑白棋实时对战游戏

手把手教你写第一个微信小程序页面

8行代码手把手教你搭建智能机器人平台