当前位置: 代码网 > it编程>编程语言>Java > spring boot启动使用https(支持证书生成和同时支持http和https,使用keytool生成证书)

spring boot启动使用https(支持证书生成和同时支持http和https,使用keytool生成证书)

2024年08月06日 Java 我要评论
此时启动项目就可以使用https访问了,这时是不能使用http访问的。

1.存在证书使用https

打开application.yml配置文件,添加server相关的ssl配置,如下代码:

server:
  port: 8080
  ssl:
    key-store: classpath:tomcat.keystore  #证书地址,可以是相对地址也可以是绝对地址
    key-alias: tomcat    # 生成证书时设置的别名
    enabled: true       #是否开启ssl
    key-store-password: 123456     # 生成证书时设置的密码

此时启动项目就可以使用https访问了,这时是不能使用http访问的

2.https和https同时支持

在配置中定义一个http的端口配置

server:
  port: 8080
  httpport: 8088   #自定义参数为http端口
  ssl:
    key-store: classpath:tomcat.keystore  #证书地址,可以是相对地址也可以是绝对地址
    key-alias: tomcat    # 生成证书时设置的别名
    enabled: true       #是否开启ssl
    key-store-password: 123456     # 生成证书时设置的密码

新建一个配置类customserverconfig,读取server.httpport作为http端口

@configuration
public class customserverconfig {

    @value("${server.httpport}")
    private integer httpport;

    /**
     * 创建并配置servletwebserverfactory,主要用于初始化tomcat服务器配置。
     *
     * @return servletwebserverfactory 一个配置了额外tomcat连接器的tomcatservletwebserverfactory实例。
     */
    public servletwebserverfactory serverfactory() {
        // 创建tomcatservletwebserverfactory实例
        tomcatservletwebserverfactory tomcat = new tomcatservletwebserverfactory();

        // 添加额外的tomcat连接器
        tomcat.addadditionaltomcatconnectors(createstandardconnector());

        return tomcat;
    }
    /**
     * 创建一个标准的connector实例,用于tomcat服务器接收http请求。
     *
     * @return connector 返回配置好的connector实例,它使用nio协议监听指定的http端口。
     */
    private connector createstandardconnector() {
        // 创建一个http11nioprotocol协议的connector实例
        connector connector = new connector("org.apache.coyote.http11.http11nioprotocol");
        // 设置connector监听的端口号
        connector.setport(httpport);
        return connector;
    }
}

3.使用keytool命令行工具生成一个自签名的证书

keytool -genkeypair -alias tomcat -keyalg rsa -keysize 2048 -validity 365 -keystore tomcat.keystore -keypass changeit -storepass changeit -dname "cn=yourservername, ou=yourorganizationalunit, o=yourorganization, l=city, st=state, c=country"

 4.导出公钥证书

keytool -exportcert -alias tomcat -file tomcat.crt -keystore tomcat.keystore -storepass changeit

5.将证书导入到java中,java程序就可以无改动访问当前证书的https服务 

keytool -import -trustcacerts -file tomcat.crt -alias tomcat -keystore "%java_home%\jre\lib\security\cacerts" -storepass changeit
(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com