博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jetty-9.4.18 配置SSL(以及获取/使用阿里云免费SSL证书)
阅读量:4109 次
发布时间:2019-05-25

本文共 4122 字,大约阅读时间需要 13 分钟。

1. 步骤
  • 关于 Jetty 的配置/使用,如果不清楚的话,请参考官方文档,即
  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-startdMKDIR : ${jetty.base}\start.dINFO  : 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,httpsINFO  : webapp          transitively enabled, ini template available with --add-to-start=webappINFO  : server          transitively enabled, ini template available with --add-to-start=serverINFO  : security        transitively enabledINFO  : servlet         transitively enabledINFO  : https           initialized in ${jetty.base}\start.d\https.iniINFO  : threadpool      transitively enabled, ini template available with --add-to-start=threadpoolINFO  : ssl             initialized in ${jetty.base}\start.d\ssl.iniINFO  : bytebufferpool  transitively enabled, ini template available with --add-to-start=bytebufferpoolINFO  : deploy          initialized in ${jetty.base}\start.d\deploy.iniMKDIR : ${jetty.base}\etcCOPY  : ${jetty.home}\modules\ssl\keystore to ${jetty.base}\etc\keystoreMKDIR : ${jetty.base}\webappsINFO  : Base directory was modified
  1. 修改 start.d 目录下的 ssl.ini 文件,将默认的 ssl 端口改为 443 即 https 的默认端口,仅仅修改这一行即可
## Connector port to listen onjetty.ssl.port=443
  1. 在 “webapps” 目录中部署一个简单的应用。在 “webapps” 目录中新建一个 “root” 目录,并在 “root” 目录中新建一个文件为 “index.html”,文件 “index.html” 的内容为 “<h2>hello, world</h2>”。这个简单的应用完全是为了用于测试,这个应用的访问路径为 root 路径即 “/”。(以上步骤,如果不清楚可以参考 Jetty 文档,即

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

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

    阿里云申请免费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 0drwxrwx---+ 1 jokee None 0 Jul 25 23:23 etcdrwxrwx---+ 1 jokee None 0 Jul 25 22:39 start.ddrwxrwx---+ 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 0drwxrwx---+ 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 文件,将域名 “” 解析到本机即 “127.0.0.1”,因为服务器在本机。
127.0.0.1       www.example.com127.0.0.1       example.com
  1. 在 jetty_base 目录下启动 Jetty 服务器
$ java -jar $JETTY_HOME/start.jar2019-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. 然后,在火狐浏览器地址栏输入:“ 或 “ ssl 已经配置成功了(可以看到地址栏显示绿色的锁)
    在这里插入图片描述

转载地址:http://rjlsi.baihongyu.com/

你可能感兴趣的文章
第七章 - 本地方法栈
查看>>
第十一章 - 直接内存
查看>>
JDBC核心技术 - 上篇
查看>>
JDBC核心技术 - 下篇
查看>>
一篇搞懂Java反射机制
查看>>
一篇彻底搞懂Java注解与枚举类
查看>>
【2021-MOOC-浙江大学-陈越、何钦铭-数据结构】树
查看>>
MySQL主从复制不一致的原因以及解决方法
查看>>
RedisTemplate的key默认序列化器问题
查看>>
序列化与自定义序列化
查看>>
ThreadLocal
查看>>
从Executor接口设计看设计模式之最少知识法则
查看>>
OKhttp之Call接口
查看>>
application/x-www-form-urlencoded、multipart/form-data、text/plain
查看>>
关于Content-Length
查看>>
WebRequest post读取源码
查看>>
使用TcpClient可避免HttpWebRequest的常见错误
查看>>
EntityFramework 学习之一 —— 模型概述与环境搭建 .
查看>>
C# 发HTTP请求
查看>>
初试visual studio2012的新型数据库LocalDB
查看>>