一、服务端发布https服务
1、准备SSL证书
(1)自签名证书:如果你只是用于开发或测试环境,可以生成一个自签名证书。
(2)CA 签名证书:对于生产环境,应该使用由受信任的证书颁发机构 (CA) 签名的证书。
这里采用生成自签名证书,可以使用keytool工具生成自签名证书(jdk工具):
keytool -genkeypair -alias myapp -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore keystore.p12 -validity 3650
这将创建一个有效期为 10 年的自签名证书,并将其存储在 keystore.p12
文件中。你需要提供一些信息,如组织名称等。注意记住密码和别名。
如下图:
2、配置springboot启用HTTPS并指定SSL证书的位置和密码
用application.properties
或 application.yml都可以。这样配置可以读取环境变量
把证书放在resource的ssl目录下
server:
port: 8443
ssl:
enabled: ${SSL_ENABLED:true}
key-store: ${SSL_KEY_STORE:classpath:ssl/keystore.p12}
key-store-password: ${SSL_KEY_STORE_PASSWORD:myapptest}
keyStoreType: ${SSL_KEY_STORE_TYPE:PKCS12}
keyAlias: ${SSL_KEY_ALIAS:myapp}
启动服务即可通过https访问了,默认可以设置成false
3、配置docker容器,启动https
把证书放在ssl目录下
version: "3"
services:
test-https:
image: openjdk:8-jdk
container_name: test-https
restart: always
ports:
- 22443:22443
command: java -jar /opt/test-https.jar
volumes:
- /home/services/test/:/opt/
- /home/services/test/config/:/config/
- /home/services/test/ssl/:/ssl/
- /home/services/test/template_server/:/template_server/
- /home/services/test/patch/:/patch/
- /home/log/test/:/logs/