Kum*_*hav 1 embedded-jetty spring-boot
如何配置Spring Boot以在443处使用HTTPS端口运行Jetty.配置还应注意生成密钥.
简而言之,以下maven插件的等效配置,: -
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>keytool-maven-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<phase>generate-resources</phase>
<id>clean</id>
<goals>
<goal>clean</goal>
</goals>
</execution>
<execution>
<phase>generate-resources</phase>
<id>genkey</id>
<goals>
<goal>generateKeyPair</goal>
</goals>
</execution>
</executions>
<configuration>
<keystore>${project.build.directory}/jetty-ssl.keystore</keystore>
<dname>cn=my.hostname.tld</dname>
<!-- put your CN here -->
<keypass>jetty6</keypass>
<storepass>jetty6</storepass>
<alias>jetty6</alias>
<keyalg>RSA</keyalg>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
和:-
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.26</version>
<configuration>
<jvmArgs>-Xmx2048m -Xms1536m -XX:PermSize=128m -XX:MaxPermSize=256m</jvmArgs>
<!-- http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin -->
<scanIntervalSeconds>10</scanIntervalSeconds>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>9999</port>
<maxIdleTime>60000</maxIdleTime>
</connector>
<connector implementation="org.mortbay.jetty.security.SslSocketConnector">
<port>9993</port>
<maxIdleTime>60000</maxIdleTime>
<keystore>${project.build.directory}/jetty-ssl.keystore</keystore>
<password>jetty6</password>
<keyPassword>jetty6</keyPassword>
</connector>
</connectors>
<contextPath>/</contextPath>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
从Spring Boot 1.1.7开始,您可以将Jetty和Tomcat配置为通过属性文件中的三个属性使用SSL,如Spring Boot文档中所示
通过这些属性配置SSL将启用HTTPS并禁用HTTP,因为仅使用属性文件不允许这两者.如果要同时提供服务,Spring建议您通过属性配置HTTPS(SSL)并以编程方式配置HTTP.
我找到了这个解决方案 这对我来说可以.此方法可以支持HTTP和HTTPS.
@Component
public EmbeddedServletContainerCustomizer servletContainerCustomizer() {
return new EmbeddedServletContainerCustomizer() {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
if (container instanceof JettyEmbeddedServletContainerFactory) {
customizeJetty((JettyEmbeddedServletContainerFactory) container);
}
}
private void customizeJetty(JettyEmbeddedServletContainerFactory container) {
container.addServerCustomizers(new JettyServerCustomizer() {
@Override
public void customize(Server server) {
// HTTP
ServerConnector connector = new ServerConnector(server);
connector.setPort(requestHttpPort());
// HTTPS
SslContextFactory sslContextFactory = new SslContextFactory();
sslContextFactory.setKeyStorePath("mykeystore.jks");
sslContextFactory.setKeyStorePassword("1234");
HttpConfiguration https = new HttpConfiguration();
https.addCustomizer(new SecureRequestCustomizer());
ServerConnector sslConnector = new ServerConnector(
server,
new SslConnectionFactory(sslContextFactory, HttpVersion.HTTP_1_1.asString()),
new HttpConnectionFactory(https));
sslConnector.setPort(requestHttpsPort());
server.setConnectors(new Connector[] { connector, sslConnector });
}
});
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6263 次 |
最近记录: |