Jetty9 Embedded从http升级到https

什么是https

之前我在这篇文章里头说过了https

造公钥和私钥

keytool -genkey -alias sitename -keyalg RSA -keystore keystore.jks -keysize 2048

这个文件是一个公钥和私钥对

创建Connector

这一点很关键,说白了,就是当发生http请求的时候,返回一个!403,告诉他不安全,让他重定向到安全的端口

具体的做法:

  1. 对于不安全的请求返回!403

其实这个是加到web.xml里头的,只是这里用代码展现出来

ConstraintSecurityHandler security = new ConstraintSecurityHandler();
Constraint constraint = new Constraint();
constraint.setDataConstraint(Constraint.DC_CONFIDENTIAL);

//makes the constraint apply to all uri paths
ConstraintMapping mapping = new ConstraintMapping();
mapping.setPathSpec("/*");
mapping.setConstraint(constraint);
security.addConstraintMapping(mapping);

// Web app handlers
WebAppContext app = new WebAppContext(server, base, "/");
app.setHandler(security);
  1. 对于http的Connector,告诉它安全的端口和协议是什么

    private static ServerConnector getHttpConnector(int port) {
    HttpConfiguration config = new HttpConfiguration();
    config.setSecureScheme("https");
    config.setSecurePort(port + 443);
    ServerConnector connector = new ServerConnector(server, new HttpConnectionFactory(config));
    connector.setPort(port);
    return connector;
    }
  2. 加入https的Connector
    private static ServerConnector getHttpsConnector(int port) {
    HttpConfiguration https = new HttpConfiguration();
    https.setSecurePort(port);
    https.setSecureScheme("https");
    https.addCustomizer(new SecureRequestCustomizer());
    
    SslContextFactory sslContextFactory = new SslContextFactory();
    sslContextFactory.setKeyStorePath(ControllerWebServer.class.getResource(
            "/keystore.jks").toExternalForm());
    sslContextFactory.setKeyStorePassword("123456");
    sslContextFactory.setKeyManagerPassword("123456");
    
    ServerConnector sslConnector = new ServerConnector(server,
            new SslConnectionFactory(sslContextFactory, "http/1.1"),
            new HttpConnectionFactory(https));
    sslConnector.setPort(port);
    
    return sslConnector;
    }
  3. server 启动
server.setConnectors(new Connector[]{httpsConnector, httpConnector});

// Web app handlers
WebAppContext app = new WebAppContext(server, base, "/");
app.setHandler(security);

// Start app
server.start();
logger.info(LoggerServer.CU, "Start updater web server success");
server.join();
时间: 2024-12-11 18:39:39

Jetty9 Embedded从http升级到https的相关文章

http网站快捷免费升级到https

前言 能看到这篇文章我想大家对http和https都不陌生,我也不做过多阐述,直接开干 工具 已备案域名一个 CentOS 7 Nginx Let's Encrypt 这里我详细介绍下Let's Encrypt,它是国外一个公共的免费SSL项目,由 Linux 基金会托管,它的来头不小,由 Mozilla.思科.Akamai.IdenTrust 和 EFF 等组织发起,目的就是向网站自动签发和管理免费证书,以便加速互联网由 HTTP 过渡到 HTTPS,目前 Facebook 等大公司开始加入赞

将http升级为https tomcat

将在tomcat中跑的项目 由http升级为https https可以保证连接的可靠性 与 数据的安全性 1.首先我们要申请一个证书.证书这东西有不少免费的 腾讯 阿里 七牛都有 不过基本都要求实名啊 备案啊 所以呢 我们可以到其他地方申请 有个地址 https://www.pianyissl.com/ 这里可以申请证书 不过呢 只有3个月的有效期. OK 当我们申请好证书之后呢 打开证书 可以看到 有两个我文件 keystore.jks 和 password.txt txt里面就是密码 下面我

Nginx http升级到https

http和https的区别是 有的网站,http打开的时候,页面提示不安全,比如你点击下面的网站http://www.511easy.com/bug/login 怎样才能去掉这个不安全的提示呢? 从http升级到https呗 最终效果看一下: 如果目前有一个网站,要怎么升级为https呢 域名: 511easy.com 有域名了就可以申请免费的ssl证书,如下截图,基于各个Web服务器的证书,我这边用的是Nginx 那然后就需要配置nginx.conf的配置了,大概就是用下面的第三个,前两个是我

什么是https?http升级为https需要什么?

一.什么是https? https是一种加密传输协议,网站使用https后可以避免敏感信息被第三方获取.https加密协议=SSL / TLS+http协议,也就是说,在传统的http协议上加上SSL成就可以实现数据传输加密. 二.网站从http升级为https需要什么? 前面说到https加密协议=SSL / TLS+http协议,也就是说,网站从http升级为https的关键就在于SSL证书,网站安装SSL证书之后就可以从http升级为https,进行加密传输,保护网站数据安全了. 一开始S

【Nginx】将http升级到https并且同时支持http和https两种请求

一.如何将http升级到https 需要满足下面三个: 1.域名 2.nginx 3.SSL证书 一般第三方证书颁发机构下发的证书是收费的,一年好几千. 1) 从腾讯云申请免费的SSL证书,有效期一年,可申请多个  SSL 证书申请地址在这里: https://console.qcloud.com/ssl 申请过程几分钟就可以搞定,主要分两步 1.申请免费的证书,设置手动DNS验证 2.到域名对应的域名解析商处添加解析记录 下载申请好的域名,上传到服务器指定位置 2) nginx配置 2.1.使

三步解决fiddler升级后https无法通过证书验证问题

1.      去掉 https 捕获选项 去掉勾选 2.      删除ie下的fiddler证书 将证书下的所有DO_NOT_TRUST_FIDDER证书都删掉 3.      配置https捕获选项 勾选弹出下图 选yes 选yes 再试就OK了 --特殊浏览器处理:firefox 一般装fiddler,如果本地有火狐就会启用fiddlerhook,当然新版火狐升级了安全设置,禁用了此插件,可通过about:config 中 xpinstall.signatures.required 设置

如何免费把网站从http升级到https

预备知识: 1.什么是https, 相对于https有什么优势/劣势? 2.升级https需要准备的文件? 如何升级? 3.ssl证书类型?  (EV/OV/通配符证书....) 4.如何选择ssl证书? 如何选择供应商?  (推荐一家:godaddy比较便宜,Versign/GlobalSign等都比较偏贵) 5.如何免费获取信任的ssl证书? 如果对以上几点还不熟悉的同学可以先去了解以下,本文主要讲解第五点如何获取到免费的被信任的SSL证书. 什么时候可以考虑到使用免费的证书. 例如:你开发

http升级为https后,静态资源失效和ajax请求跨域问题

把http升级以后,一打开原本的网站,会发现很多静态资源失效了. 只需要在html页面加入: <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> 2:ajax请求与显示跨域 当发送ajax请求时报错: XMLHttpRequest cannot load [ajax请求的服务器url] No 'Access-Control-Allow-Origin

HTTPS 升级指南

本文介绍如何将一个 HTTP 网站升级到 HTTPS . 一.获取证书升级到 HTTPS 协议的第一步,就是要获得一张证书.证书是一个二进制文件,里面包含经过认证的网站公钥和一些元数据,要从经销商购买.GoGetSSLSSLs.comSSLmate.com证书有很多类型,首先分为三种认证级别. 域名认证(Domain Validation):最低级别认证,可以确认申请人拥有这个域名.对于这种证书,浏览器会在地址栏显示一把锁.公司认证(Company Validation):确认域名所有人是哪一家