我想将请求从HTTP重定向到HTTPS。我用的是Wildfly9。在谷歌搜索后,我发现了以下内容,但它不起作用。我希望有人
<subsystem xmlns="urn:jboss:domain:undertow:2.0">
<buffer-cache name="default"/>
<server name="default-server">
<http-listener name="default" socket-binding="http" redirect-socket="https"/>
<https-listener name="https" socket-binding="https" security-realm="SSLRealm"/>
<host name="default-host" alias="localhost">
<location name="/" handler="welcome-content"/>
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
</host>
</server>
<servlet-container name="default">
<jsp-config/>
<websockets/>
</servlet-container>
<handlers>
<file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
</handlers>
<filters>
<response-header name="server-header" header-name="Server" header-value="WildFly/9"/>
<response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
</filters>
</subsystem>
首先,我以Wildfly9.0.1.final为基础,假设您只是试图通过HTTPS启用SSL,并不担心身份验证。我刚花了一天的时间想清楚这一切。完成以下文档:
https://docs.jboss.org/author/display/wfly9/admin+guide
您要做的第一件事是创建您的密钥存储库,如文档中所述。
keytool -genkey -alias MY_ALIAS -keyalg RSA -keystore MY_KEYSTORE_FILENAME -validity 365`
<security-realm name="ApplicationRealm">
<server-identities>
<ssl>
<keystore path="MY_KEYSTORE_FILENAME" relative-to="jboss.server.config.dir" keystore-password="MY_PASSWORD" alias="MY_ALIAS" key-password="MY_PASSWORD"/>
</ssl>
</server-identities>
<authentication>
<local default-user="$local" allowed-users="*" skip-group-loading="true"/>
<properties path="application-users.properties" relative-to="jboss.server.config.dir"/>
</authentication>
<authorization>
<properties path="application-roles.properties" relative-to="jboss.server.config.dir"/>
</authorization>
</security-realm>
注意:MY_KEYSTORE_FILENAME、MY_ALIAS和MY_PASSWORD必须与创建密钥时提供的值匹配。
现在,文档变得有点棘手。您现在需要向下滚动一点来执行下一步,但不幸的是,它没有告诉您这样做。现在您已经在Wildfly中安装了keystore,并在适当的安全领域中进行了配置,您需要安装HTTPS侦听器并将其链接到keystore。
https://docs.jboss.org/author/display/wfly9/admin+guide#adminguide-httpslistener
Https侦听器提供对服务器的安全访问。最重要的配置选项是security realm,它定义SSL安全上下文。
不幸的是,文档与security-realm属性并不一致(以前在ManagementRealm中安装keystore,这里在ssl-realm中引用它)。由于我将密钥存储放在ApplicationRealm中,所以我们需要这样引用它。
另外,为了澄清,您需要将其放在undertow子系统中。下面是我插入的内容,就在http-listener标记下面:
<https-listener name="httpsServer" socket-binding="https" security-realm="ApplicationRealm"/>
<subsystem xmlns="urn:jboss:domain:undertow:2.0">
<buffer-cache name="default"/>
<server name="default-server">
<http-listener name="default" socket-binding="http" redirect-socket="https"/>
<https-listener name="httpsServer" socket-binding="https" security-realm="ApplicationRealm"/>
<host name="default-host" alias="localhost">
<location name="/" handler="welcome-content"/>
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
</host>
</server>
<servlet-container name="default">
<html" target="_blank">jsp-config/>
<websockets/>
</servlet-container>
<handlers>
<file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
</handlers>
<filters>
<response-header name="server-header" header-name="Server" header-value="WildFly/9"/>
<response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
</filters>
</subsystem>
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
<socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
<socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
<socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
<socket-binding name="http" port="${jboss.http.port:8080}"/>
<socket-binding name="https" port="${jboss.https.port:8443}"/>
<socket-binding name="iiop" interface="unsecure" port="3528"/>
<socket-binding name="iiop-ssl" interface="unsecure" port="3529"/>
<socket-binding name="txn-recovery-environment" port="4712"/>
<socket-binding name="txn-status-manager" port="4713"/>
<outbound-socket-binding name="mail-smtp">
<remote-destination host="localhost" port="25"/>
</outbound-socket-binding>
</socket-binding-group>
第一步是创建SSL密钥:
keytool -genkeypair -alias serverkey -keyalg RSA -keysize 2048 -validity 7360 -keystore server.keystore -keypass mypassword -storepass mypassword
注意:记住,当它要求名字/姓氏时,应该使用您的服务器名称。
接下来,在standalone-xxx.xml中配置ManagementRealm,以包含密钥库。在下面添加server-identities标记:
<server-identities>
<ssl>
<keystore path="server.keystore" relative-to="jboss.server.config.dir" keystore-password="mypassword" alias="serverkey" key-password="mypassword"/>
</ssl>
</server-identities>
<security-realm name="ManagementRealm">
<server-identities>
<ssl>
<keystore path="server.keystore" relative-to="jboss.server.config.dir" keystore-password="mypassword" alias="serverkey" key-password="mypassword"/>
</ssl>
</server-identities>
<authentication>
<local default-user="$local" skip-group-loading="true"/>
<properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/>
</authentication>
<authorization map-groups-to-roles="false">
<properties path="mgmt-groups.properties" relative-to="jboss.server.config.dir"/>
</authorization>
</security-realm>
<management-interfaces>
<http-interface security-realm="ManagementRealm" http-upgrade-enabled="true">
<socket-binding https="management-https"/>
</http-interface>
</management-interfaces>
<socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
将HTTP重定向到HTTPS
在web.xml文件中,在web-app标记中插入以下代码块。
<security-constraint>
<web-resource-collection>
<web-resource-name>WEB_APPLICATION_NAME</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
注意:您需要将应用程序的名称放在表示web_application_name的位置。我不能确定在所有情况下会是什么,但对我来说,如果正在部署的war文件是MyApp.war,那么我将MyApp放在那里。
curl -vv -k -L -X GET http://localhost:8080/MyApp/rest/endpoint
连接#1到主机localhost保持不变
问题内容: 在PHP中,将RGB三元组转换为HSV值的最直接方法是什么? 问题答案:
问题内容: 默认情况下,我的网站使用HTTP。我确实有一个启用HTTPS的证书,但是只有其中的某些区域会强制建立安全连接。 登录是通过Ajax处理的,即使请求来自HTTP,我也想开始使用SSL。 我尝试强制请求的地址具有HTTPS,它可以完美地答复。但是,在ajax回调中,尽管回复正常,但似乎从未设置会话。 如果请求来自HTTPS,一切都会顺利进行。 为什么会这样? 我可以理解为什么浏览器拒绝HT
隐私设置->清除浏览数据(从时间开始) https/ssl->管理证书->删除所有项(包括证书) 检查没有书签。 Firefox也有类似的问题,但它的解决方案不适用于Chrome。有人对我能做些什么有什么建议吗?提前感谢您的帮助!
我正在使用Firefox,在设置服务器时,我一直在摆弄重定向。现在,Firefox已经缓存了从http://example.com/到https://example.com/和从http://sub.example.com/到https://sub.example.com/的301重定向。 我已经尝试了以下几件事: null 我的Firefox版本是38.0.1,我使用的是Windows8.1。我
我想将所有可能的url组合重定向到单个路径。 例如。 http:/例如。com--- https:/例如。com-- 超文本传输协议/example.com/abc/cde 我可以按照mod_rewrite设置处理1和3的情况,但不能执行2重定向,这有人可以帮我。 为了避免链接转换,我在网站示例中使用了escape one/in。 重新启动引擎 重写Cond%{HTTPS}关闭 重写Cond%{H
问题内容: 对于正在编写的程序,我正在使用base64.b64encode(f.read(image))从一台计算机上传输图像,并尝试在接收脚本中读取它而不将其保存到硬盘驱动器中(以最大程度地减少这种情况)处理时间)。我很难弄清楚如何将图像读取到OpenCV中而不将其保存在本地。 这是我发送图像的代码如下所示: 同时,这是接收它的代码。(这在on_message函数中,因为我正在使用MQTT进行传