注意:如果您想查看此演示应用的行为,请访问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
没有其他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
当我访问person / edit操作时,我在浏览器中获得了一个重定向循环(在专用的CentOs 6机器上使用部署的WAR文件到Jetty 9)。这是使用Jetty 9附带提供的密钥库,只需取消注释start.ini中的行即可使用它。
我正在阅读的主要Jetty SSL配置页面是here。我不清楚,是否正在更新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>
不确定如何添加它们,但它们似乎也与上面的start.ini文件行重复。
请帮助我帮助我运行最基本的Jetty SSL?非常感谢。
如果不熟悉Grails,可以简单地下载它,然后创建一个域类 - 有一个命令行选项。然后给它字段String firstName,String lastName。然后有命令生成控制器和视图 - 这完全是自动的。然后添加插件spring-security-core。在本文档的第16/17章中,正如我所示,列出哪些控制器操作是安全的,例如人/编辑。
答案 0 :(得分:4)
你实际上已经足够使用我们在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
,它会抱怨成为不受信任的证书,然后加载码头分发页面。
基于此我会说这可能是某种grails配置问题,我很遗憾也不知道答案,抱歉。
答案 1 :(得分:0)
启动Jetty 9.1,事情发生了变化,你必须按照here中的说明,看看每个Jetty开发人员看起来是否正确。此外,您不应该更改/删除/编辑${jetty.home}
目录中的任何内容。以下是Jetty 9.1 +上基于SSL / HTTPS的自签名证书所需要做的事情:
(a)设置环境变量$JETTY_HOME
以指向您安装jetty tar包的位置,例如/opt/jetty/
。
(b)创建一个新目录/tmp/myJettyApp
,将其指向您环境中的$JETTY_BASE
。
(c)cd to $JETTY_BASE
(d)按照here中的说明进行操作:
/home/sonny $ cd $JETTY_BASE
/tmp/myJettyApp/ $ java -jar $JETTY_HOME/start.jar --add-to-startd=https,http2
(e)如果您愿意,请设置您的端口:
/home/sonny $ cd $JETTY_BASE;
/tmp/myJettyApp/ $ java -jar $JETTY_HOME/start.jar jetty.ssl.port=8444
(f)现在,跑码头:
/tmp/myJettyApp/ $ java -jar $JETTY_HOME/start.jar
您将看到HTTPS正在端口8444上运行。现在,如果您想在传统的HTTPS端口中使用jetty侦听,则必须使用sudo运行:
/tmp/myJettyApp/ $ java -jar $JETTY_HOME/start.jar jetty.ssl.port=443
/tmp/myJettyApp/ $ sudo java -jar $JETTY_HOME/start.jar
请注意,这已经自动签署了自签名证书等。
现在,如果您想要生成自己的自签名证书(例如,因为您想根据需要将validity
修改为任意大小值),请按照{{{ 3}},使用keytool
生成新的自签名证书,然后将其放入$JETTY_BASE/etc/
并分别修改$JETTY_BASE/start.d/ssl.ini
和jetty.sslContext.keyStorePassword
的{{1}}。顺便说一句,对于最后两个jetty.sslContext.keyManagerPassword
密码,您可以使用运行ssl.ini
时使用的模糊明文密码或使用纯文本密码。如果要对它们进行模糊处理,请运行keytool
希望这有助于某人。