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 
                
                    
                
            
                                            
                                            
发表评论