jetty 9:设置最基本的SSL/https

Ray*_*Ray 5 ssl grails jetty

注意:如果您想查看此演示应用程序的行为,请访问www.collaborativepowernowinternational.us.在这里,选择testssl.PersonController,您可以创建一个人.然后去编辑指定SSL通道的人员,这将提供重定向循环.

看来Jetty 9中有更多配置项进入start.ini文件,我有9.05版本.

为了测试最基本的SSL/https,我在start.ini中取消注释以下几行:

#===========================================================
# SSL Context
# Create the keystore and trust store for use by
# HTTPS and SPDY
#-----------------------------------------------------------
jetty.keystore=etc/keystore
jetty.keystore.password=OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4
jetty.keymanager.password=OBF:1u2u1wml1z7s1z7a1wnl1u2g
jetty.truststore=etc/keystore
jetty.truststore.password=OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4
jetty.secure.port=8443
etc/jetty-ssl.xml

#===========================================================
# HTTPS Connector
# Must be used with jetty-ssl.xml
#-----------------------------------------------------------
jetty.https.port=8443
etc/jetty-https.xml
Run Code Online (Sandbox Code Playgroud)

没有其他Jetty配置更改.然后我构建了最基本的Grails应用程序(有一个Person类),我将某些控制器操作设置为安全,这在我的开发机器上使用较旧的内置Jetty版本(Grails包含)可以正常工作.只需包含spring-security-core,然后将以下行添加到配置文件中即可完成此操作:

grails.plugins.springsecurity.secureChannel.definition = [
  '/person/list': 'REQUIRES_INSECURE_CHANNEL',
  '/person/delete/**': 'REQUIRES_SECURE_CHANNEL',
  '/person/edit/**': 'REQUIRES_SECURE_CHANNEL',
  '/person/show': 'REQUIRES_INSECURE_CHANNEL'
]

grails.plugins.springsecurity.portMapper.httpPort=80
grails.plugins.springsecurity.portMapper.httpsPort=443
Run Code Online (Sandbox Code Playgroud)

当我访问person/edit操作时,我在浏览器中获得了一个重定向循环(在专用的CentOs 6机器上使用部署的WAR文件到Jetty 9).这是使用Jetty 9附带提供的密钥库,只是取消注释start.ini中的行以使用它.

我正在阅读的主要Jetty SSL配置页面就在这里.我不清楚的是,是否足够更新start.ini文件?如果没有,那么如何添加前一个链接中描述的jetty-https.xml中的行,即行:

 <New id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory">
    <Set name="KeyStorePath"><Property name="jetty.home" default="." />/etc/keystore</Set>
    <Set name="KeyStorePassword">OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4</Set>
    <Set name="KeyManagerPassword">OBF:1u2u1wml1z7s1z7a1wnl1u2g</Set>
    <Set name="TrustStorePath"><Property name="jetty.home" default="." />/etc/keystore</Set>
    <Set name="TrustStorePassword">OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4</Set>
 </New>
Run Code Online (Sandbox Code Playgroud)

不知道如何添加它们,但它们似乎也与上​​面的start.ini文件行重复.

能否帮助我帮助我运行最基本的Jetty SSL?非常感谢.


如果不熟悉Grails,可以简单地下载它,然后创建一个域类 - 有一个命令行选项.然后给它字段String firstName,String lastName.然后有命令生成控制器和视图 - 这完全是自动的.然后添加插件spring-security-core.在本文档的第16/17章中,正如我所示,列出哪些控制器操作是安全的,例如人/编辑.

jes*_*ell 5

您实际上已经足够使用我们在 Jetty 9.0.6 发行版中提供的默认试用密钥库来运行其中的 Jetty 部分。

简单的介绍就足以让 SSL 在 Jetty 中工作。我下载了 9.0.6 发行版并取消了这些行的注释,它可以工作。好吧,我不得不进入 start.d/demo.ini 文件并用 etc/jetty-ssl.xml 和 etc/jetty-https.xml 删除最后两行,因为它们会运行两次......但我离题了.

如果您启动 Jetty,您可以导航到https://localhost:8443它,它会抱怨证书不受信任,然后加载 jetty 分发页面。

基于此,我会说这可能是某种 grails 配置问题,遗憾的是我也不知道答案,抱歉。