李成笔记网

专注域名、站长SEO知识分享与实战技巧

使用免费的SSL证书给你的网站增加Https支持

我们在上网时,经常会遇到一些网站被浏览器提示“不安全”,比如下面的网站:

出现这种问题的根本原因在于访问网站的协议是http,现在大部分浏览器都推荐使用https来访问,这种方式安全性更高,比如今日头条的网页版:

其实,现在大部分网站都支持https了,但是还是有一些网站是不支持的,那么,如何为一个网站添加https的支持呢?答案很简单,就是给你的网站提供SSL证书就可以了。

但是,一般的SSL证书都很贵,每年几千块钱就算便宜的了,一些保护性更高的,可能需要几万甚至十几万的费用。这对中小型网站来说,也是一个不小的负担。

那么,有没有功能简单些,但也是正式的SSL证书呢?当然是有的了,不但是正式证书认证机构颁发的,而且还是免费的,证书有效周期也长达一年。这样可以节省大笔的费用了,以后有更高的要求时,升级成高级付费证书也是可以的。

“Talk is cheap. Show me the code”,咱们也通过一个基于Spring boot的最简单网站例子来演示一下给已有网站添加SSL证书的过程。

首先新建一个spring boot的web项目,我们只需要有一个网页就可以了,网页内容只显示当前时间。项目结构如下图,实际我们使用的就4个文件。

各个文件内容如下:

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>cert</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>cert</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

其实要关心的就两个引用,一个是spring-boot-starter-web,一个是
spring-boot-starter-thymeleaf。

然后看一下application.yml

spring:
  thymeleaf:
    prefix: classpath:/views/
    suffix: .html
    mode: HTML

server:
  servlet:
    context-path: /
  port: 8990

也很简单,就配置了一下端口8990.

看一下IndexController

package com.example.cert.Controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import java.time.LocalDateTime;
@Controller
public class IndexController {
    @RequestMapping(value = "/index")
    public ModelAndView rightData(ModelAndView mv) {
        mv.addObject("time",LocalDateTime.now());
        mv.setViewName("index.html");
        return mv;
    }
}

有效的代码其实就两行,一个是给time赋上时间,另一行就是指定view文件。

最后是index.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<label th:text="'当前时间:'+${time}"></label>
</body>
</html>

里面关键代码就一行,就是显示后台传过来的当前时间。

我们整个项目,关键代码不超过10行,应该不能更简单了。

我们把项目打包传到服务器上,先看一下不启用https的效果:

可以看到有不安全的提示。

咱们的目的是在网站中启用SSL证书来达到通过https协议访问的目的,所以,第一步是先获取SSL证书,这次咱们就薅一把华为云的羊毛,在华为云上申请免费的SSL证书。

1.登录华为云,找到产品->安全->SSL证书管理

2.进入SSL证书管理点击立即购买,会出现如下界面:

证书类型选择:DV(Basic)

证书品牌选择:DigiCert(只有这个提供免费的证书)

域名类型只能选择单域名

其他的默认,可以看到费用是0,点击立即购买,出现SSL证书的声明,同意即可:

点击去支付,实际因为金额是0,不用支付任何费用。

3.订单支付成功后可以在证书列表里看到刚申请的证书,不过现在还没发放。

4.点击申请证书,让你绑定域名,并填写联系信息:

5.然后进入证书列表,会看到提示域名验证的按钮:

点击域名验证,会告诉你要创建的dns记录,记下来给你提供的DNS记录信息。

6.创建域名记录集。进入域名管理页面,根据上一步的dns信息创建域名记录集:

7.验证域名所有权。等一段时间,可能10分钟左右吧,域名所有权验证通过(就是通过刚才的dns信息),会出现已签发的证书状态:

8.下载证书。点击下载,可以进入到证书下载页面:

点击下载,会下载一个压缩包,解压压缩包,可以看到各种服务器下的证书:

9.获取证书和密码。点击Tomcat,可以看到两个文件,一个是keystorePass.txt,存储密码,一个是证书文件server.jks:

这两个文件就是下一步咱们在源码里要配置的内容。

10.配置spring boot项目。在resources下创建cert文件夹,把server.jks复制进去。在application。yml的配置文件最后添加下面两行配置:

ssl: 
  key-store: classpath:cert/server.jks 
  key-store-password: 上面keystorePass.txt的密码

效果如下:

这样就大功告成了,我们重新编译打包,上传到服务器,测试一下:

没错,现在我们的网站也是传输安全的了,满足了最基础的SSL安全要求。

是不是很简单,只需要简单的配置就可以满足浏览器基本的安全要求,可以保证用户浏览你的网站是传输安全的。当然,这个免费的SSL证书只能绑定一个域名,如果有多个域名可以使用多个免费证书,或者一个收费证书。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言