Jetty-9.4.18 配置SSL(以及获取/使用阿里云免费SSL证书)

1. 步骤
  1. 下载 Jetty 最新的发布包即 .zip 文件,并解压。
  2. 配置环境变量 “JETTY_HOME”,这个也可以不配置,目的是为了方便从 jetty_base 目录执行 start.jar 文件来配置或启动 Jetty 服务器。
  3. 选择任意目录作为 jetty_base 目录,即用于配置和部署 webapp 。
  4. 命令行执行以下命令,目的是创建 “start.d” 目录,该目录也可以手动创建,用于存放 jetty 模块的配置文件即 .ini 文件。
$ java -jar $JETTY_HOME/start.jar --create-startd
MKDIR : ${jetty.base}\start.d
INFO  : Base directory was modified
  1. 继续执行以下命令,启用 jetty 中的部署 deploy 模块 / ssl 模块 / https 模块,这个三个模块会在 “start.d” 目录中分别对应一个 .ini 的配置文件,用于配置对应的模块选项,并且与 “start.d” 目录同一级新增了 etc 和 webapps 目录,webapps 目录用于部署 web-app,而 etc 目录可以用于存放 ssl 证书文件。
$ java -jar $JETTY_HOME/start.jar --add-to-start=deploy,ssl,https
INFO  : webapp          transitively enabled, ini template available with --add-to-start=webapp
INFO  : server          transitively enabled, ini template available with --add-to-start=server
INFO  : security        transitively enabled
INFO  : servlet         transitively enabled
INFO  : https           initialized in ${jetty.base}\start.d\https.ini
INFO  : threadpool      transitively enabled, ini template available with --add-to-start=threadpool
INFO  : ssl             initialized in ${jetty.base}\start.d\ssl.ini
INFO  : bytebufferpool  transitively enabled, ini template available with --add-to-start=bytebufferpool
INFO  : deploy          initialized in ${jetty.base}\start.d\deploy.ini
MKDIR : ${jetty.base}\etc
COPY  : ${jetty.home}\modules\ssl\keystore to ${jetty.base}\etc\keystore
MKDIR : ${jetty.base}\webapps
INFO  : Base directory was modified
  1. 修改 start.d 目录下的 ssl.ini 文件,将默认的 ssl 端口改为 443 即 https 的默认端口,仅仅修改这一行即可
## Connector port to listen on
jetty.ssl.port=443
  1. 在 “webapps” 目录中部署一个简单的应用。在 “webapps” 目录中新建一个 “root” 目录,并在 “root” 目录中新建一个文件为 “index.html”,文件 “index.html” 的内容为 “<h2>hello, world</h2>”。这个简单的应用完全是为了用于测试,这个应用的访问路径为 root 路径即 “/”。(以上步骤,如果不清楚可以参考 Jetty 文档,即 Jetty 的使用及配置参考-官方文档

  2. 至此,Jetty 服务器部分已经 初步完成配置。接下来,需要获取 ssl 证书并配置 Jetty 的 ssl 模块选项。

  3. 获取 ssl 证书。我使用的是阿里云的免费证书。因为我有在阿里云注册域名,所以直接在选定的域名(我拥有的域名例如为 “example.com”)下申请免费证书,然后等待审核,如果审核通过,几分钟后就可以拿到证书。
    阿里云申请免费ssl证书

  4. 紧接着上一步,下载用于 tomcat 服务器的 ssl 证书,这是一个 .zip 文件,解压后得到两个文件即 “pfx-password.txt” 文件和 example.pfx 文件,“pfx-password.txt” 文件中的密码字符串为: “abcdefgh”,在解压后的证书目录下执行如下命令,将 pfx 证书转换为 jks 格式。命令执行过程中会要求输入 3 次密码,3 次都输入 “pfx-password.txt” 文件中的密码字符串即 “abcdefgh” 即可,最后生成文件 “example.jks”,并将该文件复制到 jetty_base 的 etc 目录下,用于接下来配置 ssl。

keytool -importkeystore -srckeystore example.pfx -destkeystore example.jks -srcstoretype PKCS12 -deststoretype JKS
  1. 至此,jetty_base 的目录结构如下:
$ ls -lRH
.:
total 0
drwxrwx---+ 1 jokee None 0 Jul 25 23:23 etc
drwxrwx---+ 1 jokee None 0 Jul 25 22:39 start.d
drwxrwx---+ 1 jokee None 0 Jul 25 22:52 webapps

./etc:
total 8
-rwxrwx---+ 1 jokee None 3999 Jul 25 23:21 example.jks
-rwxrwx---+ 1 jokee None 3697 Apr 29 16:16 keystore

./start.d:
total 6
-rwxrwx---+ 1 jokee None  655 Jul 25 22:39 deploy.ini
-rwxrwx---+ 1 jokee None  182 Jul 25 22:39 https.ini
-rwxrwx---+ 1 jokee None 3310 Jul 25 22:56 ssl.ini

./webapps:
total 0
drwxrwx---+ 1 jokee None 0 Jul 25 22:52 root

./webapps/root:
total 1
-rwxrwx---+ 1 jokee None 21 Jul 25 22:52 index.html
  1. 继续修改 start.d 目录下的 ssl.ini 文件,即配置 ssl 的证书选项(总共修改 5 个属性)
## Keystore file path (relative to $jetty.base)
## 最后生成的 jks 格式的证书文件的路径
jetty.sslContext.keyStorePath=etc/example.jks

## Truststore file path (relative to $jetty.base)
## 最后生成的 jks 格式的证书文件的路径
jetty.sslContext.trustStorePath=etc/example.jks

## Keystore password
## 输入 “pfx-password.txt” 文件中的密码字符串即 “abcdefgh” 
jetty.sslContext.keyStorePassword=abcdefgh

## Keystore type and provider
# jetty.sslContext.keyStoreType=JKS
# jetty.sslContext.keyStoreProvider=

## KeyManager password
## 输入 “pfx-password.txt” 文件中的密码字符串即 “abcdefgh” 
jetty.sslContext.keyManagerPassword=abcdefgh

## Truststore password
## 输入 “pfx-password.txt” 文件中的密码字符串即 “abcdefgh” 
jetty.sslContext.trustStorePassword=abcdefgh
  1. 到此,证书已经配置完毕,接下来进行最后一步,即修改 hosts 文件,将域名 “example.com” 解析到本机即 “127.0.0.1”,因为服务器在本机。
127.0.0.1       www.example.com
127.0.0.1       example.com
  1. 在 jetty_base 目录下启动 Jetty 服务器
$ java -jar $JETTY_HOME/start.jar
2019-07-25 23:38:00.650:INFO::main: Logging initialized @1382ms to org.eclipse.jetty.util.log.StdErrLog
...
2019-07-25 23:38:02.026:INFO:oejs.Server:main: Started @2753ms
  1. 然后,在火狐浏览器地址栏输入:“https://example.com/” 或 “https://www.example.com/”,即可看到 ssl 已经配置成功了(可以看到地址栏显示绿色的锁)
    在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值