<返回更多

如何实现HTTPS服务器

2020-12-07    
加入收藏
Java第56讲——如何实现HTTPS服务器

 

到目前为止,我们编写的Web服务器,都是基于HTTP协议来实现的。

大家知道,HTTP协议是文本协议,而且是明文形式,很容易被嗅探窃听或攻击,安全性不太好。

其实,我们使用SpringBoot框架开发的基于HTTP的Web服务器,不需要进行编码修改,只需要稍稍配置,就可以变成基于HTTPS的Web服务器,极大提高系统的安全性。

我们还是从概念开始讲起吧。

1、HTTP协议

HTTP,HyperText Transfer Protocol,超文本传输协议。

HTTP协议基于请求与响应在客户端和服务器端交互,HTTP是一种无状态的协议;

HTTP协议是因特网上应用最为广泛的应用层传输协议,可以用于传输html文件、图片、文本信息,还可以用于查询和修改服务器上的数据。

基于HTTP协议的Web系统的协议栈如下图所示:

Java第56讲——如何实现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系统的协议栈如下图所示:

Java第56讲——如何实现HTTPS服务器

 

下面我们用实际的例子,实现一个使用HTTPS的Web服务器。

4、建立一个普通的Web服务器

我们使用IDEA,基于SpringBoot建立一个普通的Web服务器模块secure_web,使用了Lombok与Spring Web依赖,建立后的代码视图如下:

Java第56讲——如何实现HTTPS服务器

 

5、新建controller包,添加ShowMessageController类

添加该类后,代码视图如下:

Java第56讲——如何实现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;
@RestController
public class ShowMessageController{
    @Data
    private static class WebData{
        private int errorCode;
        private String message;
    }
    @GetMapping("/showMessage")
    public WebData showMessage(){
        WebData webData = 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

下面是命令执行情况:

Java第56讲——如何实现HTTPS服务器

 

将生成的secure_web.key文件拷贝到resources目录中:

Java第56讲——如何实现HTTPS服务器

 

7、配置Web服务器的HTTPS相关属性

修改application.properties文件,添加HTTPS相关的属性。修改后的application.properties文件内容如下:

server.port=8188
server.ssl.key-store=resources/secure_web.key
server.ssl.key-alias=secure_web
server.ssl.key-store-password=888888

这四个配置项分别是Web服务的监听端口,数字证书文件名,生成证书时输入的别名和密码。

8、运行与测试

对程序编译,得到secure_web.jar软件,运行该程序:

Java第56讲——如何实现HTTPS服务器

 

在浏览器中输入 https://ip地址:8188/showMessage,浏览器会给出告警信息:

Java第56讲——如何实现HTTPS服务器

 

点击“高级”按钮,然后点击“继续前往<IP地址>(不安全)”:

Java第56讲——如何实现HTTPS服务器

 

将会得到从服务器返回的信息(JSON格式):

Java第56讲——如何实现HTTPS服务器

 

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

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>