如何实现HTTPS服务器


如何实现HTTPS服务器

文章插图
 
到目前为止,我们编写的Web服务器,都是基于HTTP协议来实现的 。
大家知道,HTTP协议是文本协议,而且是明文形式,很容易被嗅探窃听或攻击,安全性不太好 。
其实,我们使用SpringBoot框架开发的基于HTTP的Web服务器,不需要进行编码修改,只需要稍稍配置,就可以变成基于HTTPS的Web服务器,极大提高系统的安全性 。
我们还是从概念开始讲起吧 。
1、HTTP协议HTTP,HyperText Transfer Protocol,超文本传输协议 。
HTTP协议基于请求与响应在客户端和服务器端交互,HTTP是一种无状态的协议;
HTTP协议是因特网上应用最为广泛的应用层传输协议,可以用于传输html文件、图片、文本信息,还可以用于查询和修改服务器上的数据 。
基于HTTP协议的Web系统的协议栈如下图所示:
如何实现HTTPS服务器

文章插图
 
2、SSL与TSL协议SSL,Secure Sockets Layer,安全套接字协议;
TLS,Transport Layer Security,传输层安全协议;
TLS与SSL在传输层与应用层之间对网络连接进行加密,为网络通信提供安全及数据完整性 。
3、HTTPS协议HTTPS,Hyper Text Transfer Protocol over SecureSocket Layer,即HTTP over SSL,基于SSL的HTTP协议 。
我们可以把HTTPS看作安全的HTTP协议 。
基于HTTPS协议的Web系统的协议栈如下图所示:
如何实现HTTPS服务器

文章插图
 
下面我们用实际的例子,实现一个使用HTTPS的Web服务器 。
4、建立一个普通的Web服务器我们使用IDEA,基于SpringBoot建立一个普通的Web服务器模块secure_web,使用了Lombok与Spring Web依赖,建立后的代码视图如下:
如何实现HTTPS服务器

文章插图
 
5、新建controller包,添加ShowMessageController类添加该类后,代码视图如下:
如何实现HTTPS服务器

文章插图
 
ShowMessageController类的源代码如下:
package com.flying.secure_web.controller;import lombok.Data;import org.springframework.web.bind.annotation.GetMApping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class ShowMessageController{@Dataprivate static class WebData{private int errorCode;private String message;}@GetMapping("/showMessage")public WebData showMessage(){WebData webData = https://www.isolves.com/it/wlyx/fwq/2020-12-07/new WebData();webData.setErrorCode(0);webData.setMessage("success");return webData;}}6、生成数字证书JDK提供了一个keytool工具,可以生成数字证书 。
我们执行下面的命令,生成一个secure_web.key证书文件,该证书文件有效期为30天,使用RSA算法,密钥长度为2048,别名为secure_web:
keytool -genkey -alias secure_web -keyalg RSA -keysize 2048 -keystore secure_web.key -validity 30输入命令时,设置密码为888888
下面是命令执行情况:
如何实现HTTPS服务器

文章插图
 
将生成的secure_web.key文件拷贝到resources目录中:
如何实现HTTPS服务器

文章插图
 
7、配置Web服务器的HTTPS相关属性修改application.properties文件,添加HTTPS相关的属性 。修改后的application.properties文件内容如下:
server.port=8188server.ssl.key-store=resources/secure_web.keyserver.ssl.key-alias=secure_webserver.ssl.key-store-password=888888这四个配置项分别是Web服务的监听端口,数字证书文件名,生成证书时输入的别名和密码 。
8、运行与测试对程序编译,得到secure_web.jar软件,运行该程序:
如何实现HTTPS服务器

文章插图
 
在浏览器中输入 https://ip地址:8188/showMessage,浏览器会给出告警信息:
如何实现HTTPS服务器

文章插图
 
点击“高级”按钮,然后点击“继续前往<IP地址>(不安全)”:
如何实现HTTPS服务器

文章插图
 
将会得到从服务器返回的信息(JSON格式):
如何实现HTTPS服务器

文章插图
 
根据浏览器的提示信息,我们确实实现了基于HTTPS的安全Web服务器 。


推荐阅读