内置Jetty HTTPS启动
2016-07-12 16:03
316 查看
上一章用内置的jetty搭建了web服务,主要是加载容器和选择通道,这次我们来搭建一个支持安全协议SSL的web服务,即https。
我们先来复习两种加密的方式,一种是对称加密,另一种是非对称加密。
对称加密就是解密和加密的秘钥是一样的,代表性的为AES算法。这种传输的效率要高一些,但是保密性较差,因为秘钥的保管十分重要。
非对称加密就是加密的秘钥和解密的秘钥不相等,也就是分为公钥和私钥。这样可以保证安全性,但是传输的效率会低一些,代表性为RSA算法,因此在一般的加密情况下我们采用非对称加密的方式去传输对称加密的秘钥,然后采用AES传输主要的数据。
1、我们首先使用JDK自带的加密工具生成秘钥:
输入相应的秘钥,需要输入两个秘钥,,分别输入password1,password2。
这样生成keystore文件,存放在webapp下面。
2、让后导出证书:
3、生成OBA文件:
PS:jar包对应自己的版本。密码填写自己的密码。
启动代码
启动访问:https://localhost:8089/ 提示不安全证书,信任即可访问。
我们先来复习两种加密的方式,一种是对称加密,另一种是非对称加密。
对称加密就是解密和加密的秘钥是一样的,代表性的为AES算法。这种传输的效率要高一些,但是保密性较差,因为秘钥的保管十分重要。
非对称加密就是加密的秘钥和解密的秘钥不相等,也就是分为公钥和私钥。这样可以保证安全性,但是传输的效率会低一些,代表性为RSA算法,因此在一般的加密情况下我们采用非对称加密的方式去传输对称加密的秘钥,然后采用AES传输主要的数据。
1、我们首先使用JDK自带的加密工具生成秘钥:
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
输入相应的秘钥,需要输入两个秘钥,,分别输入password1,password2。
这样生成keystore文件,存放在webapp下面。
2、让后导出证书:
keytool -export -alias jetty -file jetty.crt -keystore keystore
3、生成OBA文件:
java -cp jetty-util-9.3.8.v20160314.jar org.eclipse.jetty.util.security.Password <your password>
PS:jar包对应自己的版本。密码填写自己的密码。
启动代码
private static int PORT = 8089; public static void main(String[] args) { startJettyByHttps(); } public static void startJettyByHttps() { Server server = new Server(); HttpConfiguration https_config = new HttpConfiguration(); https_config.setSecureScheme("https"); SslContextFactory sslContextFactory = new SslContextFactory(); sslContextFactory.setKeyStorePath("./webapp/keystore"); // 私钥 sslContextFactory.setKeyStorePassword("password1"); // 公钥 sslContextFactory.setKeyManagerPassword("password2"); ServerConnector httpsConnector = new ServerConnector(server, new SslConnectionFactory(sslContextFactory,"http/1.1"), new HttpConnectionFactory(https_config)); // 设置访问端口 httpsConnector.setPort(PORT); httpsConnector.setIdleTimeout(IDLE_THREAD_NUM); server.addConnector(httpsConnector); WebAppContext webApp = new WebAppContext(); webApp = new WebAppContext(); webApp.setContextPath("/"); webApp.setResourceBase("./webapp"); server.setHandler(webApp); try { server.start(); server.join(); } catch (Exception e) { e.printStackTrace(); } finally { httpsConnector.close(); } }
启动访问:https://localhost:8089/ 提示不安全证书,信任即可访问。
相关文章推荐
- IO复用中epoll、poll和select的用法及区别
- php知识点3-HTTP 头部-Accept与Content-Type的区别
- php知识点3-HTTP 头部-Connection
- http协议
- 微信支付 org.apache.http包相关类过时解决
- 网络流-最小费用最大流
- TCP option 3, Window Scale
- Linux(CentOS)网络流量实时监控(iftop)
- 笔记----httpd安装启动流程
- Apache httpd配置虚拟主机的三种方法
- Android webview 加载https网页显示空白
- Python网络编程中urllib2模块的用法总结
- Session的生命周期
- Java网络编程之(一): TCP的简单连接
- meta标签中的http-equiv属性使用介绍
- Ubuntu 14.04更新软件提示W: GPG error: http://archive.ubuntukylin.com:10006 xenial InRelease
- http协议
- (JAVA)基于Socket的TCP和UDP编程
- 接入httpDNS
- Tomcat + 数字证书 部署webservice (客户端调用https webService)