Solon

十九、如何增加 https 监听支持(ssl)

一般我们是使用 nginx (或者别的反向代理)添加 ssl 监听的。像:

server {
  listen        80;
  listen       443 ssl;
  server_name  solon.noear.org;  
  
  ssl_certificate   /data/_ca/solon.noear.org/solon.noear.org_chain.crt;
  ssl_certificate_key  /data/_ca/solon.noear.org/solon.noear.org_key.key;
  ssl_ciphers HIGH:!aNULL:!MD5;
  
  ssl_session_timeout 5m;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;
  
  location / {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
    proxy_pass http://127.0.0.1:8086;
  }
}

但某些情况下,我们可以无法使用反向代理,也或者不想用反向代理。这个时候需要我们的应用,直接监听 https 端口。

1、添加 ssl 证书配置

目前支持 ssl 证书配置的已适配 http server 有:

  • solon.boot.jdkhttp
  • solon.boot.jlhttp
  • solon.boot.smarthttp
  • solon.boot.jetty
  • solon.boot.undertow

请通过工具生成 ssl 证书,目前只支持:jkspfx 两种格式。配置示例:

server.ssl.keyStore: "demo.jks" #或 "demo.pfx"
server.ssl.keyPassword: "demo"

2、注意

  • 配置 ssl 后,就不能使用 http 协议了。一个端口只能支持一种协议
  • 配置的端口,即是 https 监听的端口
server.port: 8081

server.ssl.keyStore: "demo.jks" #或 "demo.pfx"
server.ssl.keyPassword: "demo"

以上配置启动后,正确打开为:https://localhost:8081