精华内容
下载资源
问答
  • Web Socket tls failing

    2021-01-12 04:36:19
    <p>Web socket was working before upgrade right now give error. <pre><code> 2016-04-29 20:15:33.746 [debug] <0.633.0>:process_header:281 ({tlssock,#Port<0.16508>,#Port<0.16509>}) ...
  • 在本文中,我们向您展示如何在启用了TLS / SSL或https安全连接的Tomcat上部署JAX-WS Web服务。 实际上,答案很简单,只需将其部署为普通的Web服务并在Tomcat服务器上正确配置SSL连接即可。???? 注意 本文只是我在...

    在本文中,我们向您展示如何在启用了TLS / SSL或https安全连接的Tomcat上部署JAX-WS Web服务。 实际上,答案很简单,只需将其部署为普通的Web服务并在Tomcat服务器上正确配置SSL连接即可。🙂

    注意
    本文只是我在SSL连接环境中开发Web服务的最后几篇文章的结合。

    1.配置Tomcat + SSL

    有关详细信息,请参阅本指南– 使Tomcat支持SSL或https连接

    基本上,只需从受信任的证书提供者处购买证书,或使用JDK的keytool命令生成用于本地测试的虚拟证书。 并将以下部分放入您的Tomcat server.xml文件中。

    文件:$ Tomcat \ conf \ server.xml

    //...
     <!-- Define a SSL HTTP/1.1 Connector on port 8443
             This connector uses the JSSE configuration, when using APR, the 
             connector should be using the OpenSSL style configuration
             described in the APR documentation -->
     
     <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
                   maxThreads="150" scheme="https" secure="true"
                   clientAuth="false" sslProtocol="TLS" 
    	       keystoreFile="c:\your keystore file"
    	       keystorePass="your keystore password" />
      //...

    重新启动Tomcat,现在,您的Tomcat支持SSL连接,例如https:// localhost:8443

    2.部署Web服务

    像普通的Web服务一样部署它,请参阅本指南– 在Tomcat Servlet容器上部署JAX-WS Web服务

    3.测试

    配置完成; 您可以使用普通的Web服务客户端以SSL连接访问已部署的Web服务。

    例如,

    URL url = new URL("https://localhost:8443/HelloWorld/hello?wsdl");
        QName qname = new QName("http://ws.mkyong.com/", "HelloWorldImplService");
        Service service = Service.create(url, qname);
    
        HelloWorld hello = service.getPort(HelloWorld.class);
        System.out.println(hello.getHelloWorldAsString());

    注意
    对于localhost SSL测试环境,客户端将遇到以下异常,请阅读以下问题和解决方案:

    1. java.security.cert.CertificateException:找不到与本地主机匹配的名称
    2. SunCertPathBuilderException:无法找到到请求目标的有效证书路径

    4.完成

    您的Web服务具有SSL保护,相当简单,在Web服务站点上没有任何更改; 只需将Tomcat配置为仅支持SSL连接。

    参考
    1. Wiki – SSL连接
    2. JAX-WS你好世界示例

    翻译自: https://mkyong.com/webservices/jax-ws/deploy-jax-ws-web-services-on-tomcat-ssl-connection/

    展开全文
  • Bug: TLS Socket error

    2020-12-09 05:05:27
    home/user/quassel-webserver/node_modules/ws/lib/Receiver.js:386 default: srcBuffer.copy(dstBuffer, dstOffset, 0, length); break; ^ RangeError: out of range index at RangeError (native) at fast...
  • ws_upgrade error

    2020-12-26 18:28:04
    <p>I decide to write some common tests and got an error with upgrading socket on web server Cowboy. <pre><code> erlang test_gun(_Config) -> {ok, Pid} = gun:open(?HOST, ?PORT, []), Res = ...
  • I followed the instructions on how to configure TLS in netopeer like it is discribed in <a href="https://github.com/CESNET/Netopeer2/blob/master/server/configuration/README.md">here</a> , but I cannot...
  • <div><p>I am the developer of AvNav - we are soon launching an EFB in PWA (Progressive Web App) format - and Stratux will be the only ADSB supported initially - because it has WebSockets support....
  • TLS/SSL sockets not working

    2020-12-29 03:28:16
    <p>If I use a ws uri (as opposed to a wss uri), everything works fine, and I can connect to the local web sockets server, and receive echo feedback. However, if I use wss, the server initialises ...
  • [#|2008-09-04T00:33:09.792-0700|SEVERE||javax.enterprise.system.container.web|_ThreadID=18;_ThreadName=Thread-3;|Pro tocolChain exception java.lang.NullPointerException at ...
  • web service

    2017-04-06 17:52:28
    安全牛web安全笔记 webservice 安全考虑 ----使用api key 或者session token 实现和跟踪身份认证 ----身份认证由服务器完成,而非客户端 ----API key 用户名, session token 永远不要用url发送 ----RESTful...

    安全牛web安全笔记

    webservice 安全考虑

    ----使用api key 或者session token 实现和跟踪身份认证

    ----身份认证由服务器完成,而非客户端

    ----API key 用户名, session token 永远不要用url发送

    ----RESTful默认不提供任何安全机制,需要使用ssl/tls保护传输数据安全

    ----SOAP提供千余HTTPS的WS-security 机制

    ----使用Oauth或者HMAC进行身份验证,HMAC身份认证使用c/s共享的密钥加密API key

    ----RESTful应只允许身份认证用户使用put delete方法

    ----使用随机token方式csrf

    ----对用户提交参数过滤,建议部署基于严格白名单的方法

    ----错误消息消毒,不要把原始的报错信息发送出去

    ----直接对象引用应严格身份验证


    Oauth 和 HMAC

    展开全文
  • IBM Business Process Manager Standard V8.0.1(IBM BPM)提供了Web服务集成组件,该组件使IBM BPM服务能够调用外部Web服务。 集成组件提供了以下支持:发现Web服务... 通常,这是通过使用传输层安全性(TLS)或安...

    IBM Business Process Manager Standard V8.0.1(IBM BPM)提供了Web服务集成组件,该组件使IBM BPM服务能够调用外部Web服务。 集成组件提供了以下支持:发现Web服务,生成与WSDL相对应的IBM BPM数据类型以及与远程服务交换SOAP消息。

    在许多情况下,Web服务调用需要安全地进行。 通常,这是通过使用传输层安全性(TLS)或安全套接字层(SSL)来保护请求和响应消息交换来实现的。 但是,这种方法有一些限制,例如,在使用中介路由消息时。 在这种情况下,由于中介需要解密数据,因此将有助于保护消息部分,而与传输安全性无关。 因为WS-Security协议可以帮助您加密SOAP消息,所以当通过中介路由消息时,它可以增强安全性。

    在发送或接收SOAP消息时,WS-Security用于解决三种不同的安全性要求:

    • 确保SOAP消息的完整性,也就是说,在发送给接收者时不会对其进行篡改。 这是通过使用数字签名来完成的。
    • 确认SOAP消息的发送者或接收者的身份。 这可以通过使用安全性令牌(例如用户名令牌)来完成。
    • 确保邮件是秘密发送的。 这是通过对SOAP消息或SOAP消息的一部分进行加密和解密来完成的。

    在本文中,我们将研究如何使用Web服务集成组件来保护源自IBM BPM的Web服务请求。 我们将首先描述如何利用TLS,然后应用WS-Security来保护消息。 在WS-Security的上下文中,我们将专注于实现消息的完整性和机密性。 本文的目的不是介绍WS-Security或TSL的概念。 有关这些概念的更多信息,请参考建议的资源

    为了说明WS-Security和TSL在IBM BPM作为Web服务客户端的情况下的工作方式,我们将使用在SoapUI上运行的模拟服务,此后将其称为Web服务提供者。

    测试场景

    图1所示的测试场景包括Web服务请求者和Web服务提供者的实例,每个实例都配置为支持传输和消息级安全性。

    图1.测试场景
    测试场景

    先决条件

    要完成本文中的步骤,您将需要以下软件:

    • 已配置Process Center的IBM Business Process Manager V8.0.1
    • IBM Process Designer V8.0.1
    • SoapUI 4.5.2

    步骤概述

    以下是我们将在本文中介绍的步骤的高级概述:

    1. 设置支持安全交互所需的密钥库。
    2. 设置Web服务提供商:
      • 创建一个新项目,并将样本WSDL导入到Web服务提供程序中。
      • 在Web服务提供者中生成与WSDL对应的模拟服务。
    3. 在IBM BPM和Web服务提供者中配置传输层安全性。
    4. 创建一个IBM BPM示例并安全地调用Web服务。
    5. 配置IBM BPM以支持Web服务交互的消息级安全性。
    6. 配置Web服务提供商以支持消息级安全性并测试方案。

    设置支持安全交互所需的密钥库

    在本节中,我们将设置两个密钥库,一个由IBM BPM使用,另一个由Web服务提供商使用。 出于本文的目的,我们将使用这些密钥库来包含个人证书以及交互合作伙伴的签名者证书(公共密钥)。 此外,我们将在配置中使用密钥库来支持SSL以及消息级安全性。 在实际情况中,您将不得不处理单独的信任库以及两端的证书信任链。

    为IBM BPM创建密钥库

    要创建密钥库,请完成以下步骤:

    1. 在IBM BPM安装根目录下的\ bin目录中,运行ikeyman.bat
    2. 选择密钥=>数据库文件=>新建
    3. 选择JKS作为密钥数据库类型,指定clientkeystore.jks作为文件名,然后为密钥文件选择一个适当的目录,如图2所示。
    4. 在密码提示下,输入您选择的密码,例如WebAS ,然后单击OK
      图2.创建密钥库
      创建密钥库
    5. 现在,您需要创建一个新的自签名证书。 这代表个人证书,并且包含公共和私有密钥对。 私有密钥由IBM BPM用于签署出站请求消息并解密传入的响应消息。

      将提取公钥作为签署者证书,并将其导入到Web服务提供商的信任库中。 这使Web服务提供商可以验证数字签名是否也用于加密出站请求消息。 另外,通过将IBM BPM公钥添加到Web服务提供者的信任库中,可以在SSL握手(客户机认证)期间使用它来认证IBM BPM。

      选择“ 新的自签名”并指定以下内容:

      • 钥匙标签ClientCertificate
      • 通用名称bpms.com
      • 机构MyOrg
    6. 通过选择提取证书提取证书 ,然后指定以下内容:
      • 数据类型Base 64 encoded ASCII data
      • 证书文件名clientcertificate.arm
      • 位置C:\temp3 (或您选择的任何目录)

    为Web服务提供商创建密钥库

    重复为IBM BPM创建密钥库中的步骤,为Web服务提供者创建密钥库。 不同之处在于:

    1. 在步骤3中,为密钥库名称指定serverkeystore.jks
    2. 在步骤5中,您需要创建一个自签名证书,该证书代表一个个人证书,并包含一个公共和私有密钥。 Web服务提供商使用私钥来签名出站响应消息并解密传入的请求消息。

      将提取公共密钥作为签名者证书,并将其导入到IBM BPM的信任库中。 这使IBM BPM可以加密请求消息并验证传入响应消息的数字签名。 另外,通过将Web服务提供者的公钥添加到IBM BPM的信任库中,它可以在SSL握手(服务器认证)期间对Web服务提供者进行认证。

    3. 在步骤6中,指定以下值:
      • 密钥标签ServerCertificate
      • 通用名称serviceprovider.com
      • 机构MyOrg
    4. 在步骤7中,指定以下值:
      • 数据类型Base 64 encoded ASCII data
      • 证书文件名servercertificate.arm
      • 位置C:\temp3 (或您选择的任何目录)

    现在您可以交换证书并将其导入到相应的信任库中:clientcertificate.arm将被添加到serverkeystore.jks,servercertificate.arm被添加到clientstore.jks。 请记住,出于本文的目的,我们为密钥库和信任库使用了相同的文件。

    1. 使用ikeyman打开serverkeystore.jks,然后在“ 密钥数据库内容”下选择“ 签署者证书 ”。
    2. 选择添加并指定以下内容:
      • 文件名clientcertificate.arm
      • 位置C:\temp3
    3. 单击确定,然后输入clientcertificate标签。
    4. 打开clientkeystore.jks,然后在“ 密钥数据库内容”下选择“ 签署者证书 ”。
    5. 选择添加并指定以下内容:
      • 文件名servercertificate.arm
      • 位置C:\ temp3
    6. 单击“ 确定”,然后指定servercertificate的标签。

    设置网络服务提供商

    要配置Web服务提供者,请执行以下操作:

    1. 启动SoapUI并创建一个名为SampleProvider的新工作区。
    2. 右键单击SampleProvider,然后选择New soapUI Project 从可下载资源部分下载Order.wsdl并将其保存到本地目录,例如C:\ DevW。
    3. 在New SoapUI Project向导中输入以下信息,如图3所示:
      • 项目名称OrderProject
      • 初始WSLD / WADLC:\DevW\Order.wsdl
      • 选中为所有操作创建示例请求,为导入的WSDL创建Web服务模拟 ,然后单击确定
      图3.创建新项目
      建立新专案
    4. 在图4所示的Generate MockService对话框中,指定以下内容:
      • MockService选择<create>
      • 检查订单
      • Path指定/mockPurchaseOrderBinding
      • 端口指定8088
      • 选中将MockServices端点添加到模拟的接口 ,然后单击确定
      图4.生成模拟服务
      生成模拟服务
    5. 单击“ 确定”,然后将PurchaseOrderBinding MockService指定为模拟服务的名称。
    6. 选择SampleProvider => OrderProject => PurchaseOrderBinding MockService>订单> Response1。
    7. 双击Response1打开“ SOAP Response”窗口,然后输入以下代码,如图5所示:
      <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
      xmlns:exam="http://example.org">
         <soapenv:Header/>
         <soapenv:Body>
            <exam:OrderConfirmationType>
               <!--Optional:-->
               <exam:orderID>4321</exam:orderID>
               <!--Optional:-->
               <exam:expectedShipDate>25-Oct-2013</exam:expectedShipDate>
            </exam:OrderConfirmationType>
         </soapenv:Body>
      </soapenv:Envelope>
      图5. SOAP响应
      SOAP响应
    8. 关闭SOAP响应窗口。

    在IBM BPM和Web服务提供者中配置传输层安全性

    在本节中,我们将执行在IBM和Web服务提供商之间启用SSL(HTTPS)所需的步骤。

    1. 登录到WebSphere Integrated Solutions Console。
    2. 选择安全性=> SSL证书和密钥管理
    3. 选择密钥库和证书
    4. 单击“ 新建”以定义新的密钥库。 该密钥库将使用您先前使用ikeyman创建的clientkeystore.jks。
    5. 输入图6所示的以下信息,然后单击OK
      • 名称ClientKeyStore
      • 说明 :可选说明。
      • 管理范围 :选择适合您的环境的管理范围。 如果您将独立概要文件环境用于IBM BPM,请选择“节点”范围。 如果使用的是Deployment Manager环境,请选择单元作用域。 在图6中,选择了与独立配置文件相对应的Node作用域。
      • Path :密钥库所在的路径。
      • 密码: WebAS (该密码必须与您在ikeyman中定义密钥库时提供的密码相同)。
      • 类型JKS
      图6.创建WebSphere Application Server密钥库
      定义WebSphere Application Server密钥库
    6. 单击确定,然后保存到主配置。
    7. 选择安全性=> SSL证书和密钥管理 ,然后选择SSL配置
    8. 单击New创建一个新的SSL配置,并输入以下信息,如图7所示:
      • 名称BPMWSLLConfig
      • 信任存储名称 :选择在步骤5中配置的ClientKeyStore
      • 密钥库名称 :选择ClientKeyStore
      • 默认服务器证书别名clientcertificate
      • 默认客户端证书别名clientcertificate
      • 管理范围 :选择适合您的环境的管理范围。 如果将独立概要文件环境用于IBM BPM,请选择“节点”范围。 如果使用的是Deployment Manager环境,请选择单元作用域。 在图7中,选择了与独立配置文件相对应的Node作用域。
      图7.配置WebSphere Application Server SSL
      配置WebSphere Application Server SSL
    9. 单击确定,然后保存到主配置。
    10. 作为使BPM起作用的BPM端的最后一步,您需要创建动态出站SSL配置。 为此,请选择安全性=> SSL证书和密钥管理,然后选择动态出站端点SSL配置 ,然后单击新建以创建新的配置条目。 指定以下信息,如图8所示:
      • 名称bmpsweboutbound
      • 管理范围 :选择适合您的环境的管理范围。 如果将独立概要文件环境用于IBM BPM,请选择“节点”范围。 如果使用的是Deployment Manager环境,请选择单元作用域。 在图8中,选择了与独立概要文件对应的Node作用域。
      • 说明 :必填。
      • 连接信息 :单击添加,然后选择适当的SSL配置,并选择证书别名。 在这种情况下, *,*,8044是使用指定的SSL配置和证书别名的规则。 此规则指定,只要在端口8444上存在使用任何受支持协议到任何主机的出站连接,就使用指定的SSL配置(及其密钥库和信任库)和证书别名(以标识服务器的客户端)。 有关动态SSL配置的更多详细信息,请参见将安全套接字层配置与出站协议和远程安全端点动态关联
      • SSL配置BPMWSSLLConfig
      • 证书别名clientcertificate
      图8.动态SSL配置
      动态SSL配置
    11. 单击确定,然后保存到主配置。
    12. 重新启动IBM BPM。
    13. 现在,我们将切换到Web服务提供商以启用使用SSL的通信。 在SOAP UI上,选择File => Preferences => SSL Settings。
    14. 指定以下信息,如下所示:
      • KeyStore :提供serverkeystore.jks文件的完整路径。 这是您在“ 设置密钥库以支持安全交互”部分中创建的密钥库文件。 该密钥库主要用于出站SSL请求。
      • 密钥库密码WebAS
      • 选中启用模拟SSL
      • 模拟端口8044
      • 模拟KeyStore :提供serverkeystore.jks文件的完整路径。 您在“ 设置密钥库以支持安全交互”中创建了此密钥库文件。 就本文而言,我们将使用相同的文件来配置模拟服务的密钥库和信任库。
      • 模拟密码WebAS
      • 模拟密钥密码WebAS
      • 模拟TrustStore :提供serverkeystore.jks的完整路径。 这是您为Mock KeyStore指定的值。
      • 模拟TrustStore密码WebAS
      • 检查客户端身份验证
      图9.配置Web服务提供者SSL
      配置Web服务提供商SSL

      我们已使用WebAS作为密钥库和信任库密码
    15. 单击确定 现在,Web服务提供商可以在端口8444上接受SSL请求。
    16. 选择SampleProvider => OrderProject => PurchaseOrderBinding MockService并打开模拟服务。
    17. 右键单击PurchaseOrderBinding MockService,然后选择重新启动

    创建一个IBM BPM示例并使用SSL安全地调用Web服务提供者

    1. 登录到Process Designer并创建示例流程应用程序,或者根据需要使用现有的应用程序。
    2. 打开流程应用程序,创建一个新的集成服务,并将其命名为Web Service Tester
    3. 转到Web Service Tester服务,然后将Web Service集成添加到打开的画布中,如图10所示。将开始和结束链接连接到此组件。
      图10.在BPM中创建Web服务调用者
      在BPM中创建Web服务调用者
    4. 转到“ 调用Web服务”的“ 属性”选项卡,然后在“ 实现=>发现 ”下,为WSDL URI http://<hostname where SOAP UI is running>:8088/mockPurchaseOrderBinding?wsdl >输入以下内容http://<hostname where SOAP UI is running>:8088/mockPurchaseOrderBinding?wsdl
    5. 单击查看,并验证是否可以访问WSDL文件。
    6. 单击发现以建立与WSDL文件的连接,并获取操作和服务详细信息,如图11所示。
      图11.配置调用者
      配置呼叫者
    7. 验证端点地址URL使用端口8044。这是我们在Web服务提供程序中为SSL配置的端口。 此端口还与我们的动态出站SSL配置中配置的端口匹配。 因此,WebSphere运行时将使用与此SSL配置关联的密钥库和信任库。
    8. 在“ 属性”选项卡上的“ 数据映射”的“ 输入映射”部分中,更新以下值,如图12所示:
      • 数量5
      • productName的"Chairs"
      图12.指定输入数据
      输入数据
    9. 同样在“ 输入映射”部分中,单击“ 自动映射”以调出向导以映射Web服务连接器输入参数。 选择显示的项目以完成响应映射。
    10. 现在,您可以使用SSL测试Web服务了。 通过点击调试服务在服务图的右上角运行在调试模式的业务。
    11. 单击Step转到下一步,并验证是否已收到SOAP UI中设置的Web服务响应,如图13所示。
      图13.验证输出数据
      验证输出数据
    12. 单击运行以完成服务执行。
    13. Web服务请求和响应也记录在Web服务提供者中。 您可以在模拟服务消息日志中找到详细信息,如图14所示。
      图14.使用SSL的传入SOAP消息
      使用SSL的传入SOAP消息

    配置IBM BPM以支持Web服务交互的消息级安全性

    1. 打开与您的BPM配置文件相对应的100Custom.xml文件。
    2. 将清单1中所示的代码添加到100Custom.xml文件中,然后重新启动IBM BPM服务器。
    清单1.为消息级安全性配置100Custom.xml
    <server>    	    	
        <webservice-security merge="mergeChildren"> 
    	 <keystore-file merge="replace">C:\temp3\ClientKeyStore.jks</keystore-file> 
    	 <keystore-password-encrypted merge="replace"><![CDATA[Bq/GXLNbHz/aMv1FPkGeCQ==:
    	 To5WJ7gVecQ+Vx9TtE2K8A==]]>
    	 </keystore-password-encrypted> 
    	 <private-key> 
    	     <alias>clientcertificate</alias> 
    	     <keyname>clientcertificate</keyname>
    	     <password-encrypted><![CDATA[Bq/GXLNbHz/aMv1FPkGeCQ==:
    	     To5WJ7gVecQ+Vx9TtE2K8A==]]>
    	     </password-encrypted>
    	 </private-key>
    	 <private-key> 
    	 	     <alias>servercertificate</alias> 
    	 	     <keyname>servercertificate</keyname>
    	 </private-key>
    	 <keystore-type>JKS</keystore-type>
    	 <certificate>C:\temp3\clientcertificate.arm</certificate>
        </webservice-security> 
      </server>

    在中,您将看到表1中所示的元素。

    表1.消息级安全性元素
    元件 说明
    密钥库文件 您先前为SSL配置创建的密钥库文件。
    密钥库密码加密 与密钥库对应的加密密码。 要加密密码,可以使用java -cp utility.jar com.lombardisoftware.utility.EncryptPassword <password>
    别名(在第一个私钥元素下) 这对应于密钥库中个人证书的别名。 与该证书关联的私钥用于对请求进行数字签名并解密SOAP响应消息。
    键名(在第一个私钥元素下) 与别名相同。
    密码加密(在第一个私钥元素下) 与密钥库密码加密相同。
    别名(在第二个私钥元素下) 这对应于密钥库中签名者证书的别名。 与此证书关联的公共密钥用于加密SOAP请求并验证SOAP响应消息中的签名。
    键名(在第二个私钥元素下) 与别名相同。
    密钥库类型 JKS(我们正在使用JKS密钥库)。
    证书 Web服务请求者的证书文件的路径。 这是确保出站通信安全所必需的。

    配置Web服务提供商以支持消息级安全性并测试方案

    我们将测试以下两种情况:

    • 场景1:IBM BPM发送一个已签名的请求,并从Web服务提供商处接收一个加密的响应。
    • 方案2:IBM BPM发送一个加密的请求,并从Web服务提供商处接收签名的响应。

    可以测试涉及消息加密和签名的其他几种方案和组合。 但是,请注意,您将无法同时将消息加密和签名应用于响应消息,因为您可能会遇到此处提到的问题。

    还要注意,目前无法加密请求消息部分或接受带有加密消息部分的响应。 加密必须应用于SOAP主体。

    测试场景1

    1. 切换到SOAP UI上的工作区。
    2. 双击OrderProject以打开项目的配置对话框。
    3. WS-Security ConfigurationsKeystores选项卡中,为serverkeystore.jks创建一个新条目,如图15所示。
      图15.服务器密钥库
      服务器密钥库
    4. 在“ 传入的WS-Security Configuration”选项卡中,为serverkeystore.jks创建一个新条目,如图16所示。使用与密钥库关联的密码,例如WebAS。
      图16.传入的WS Security配置
      传入WSS
    5. 在“ 发送WS-Security配置”选项卡中,添加新条目以进行响应加密。 首先添加具有唯一client名称的新的传出WSS配置,然后为Encyrption添加新的WSS条目。 然后指定以下内容,如图17所示:
      • 密钥库serverkeystore.jks
      图17.传出的WS安全性加密
      即将离任的WSS Enc
    6. 选择Ctrl + S保存配置更新。
    7. 选择SampleProvider => OrderProject => PurchaseOrderBinding MockService,然后在左下角的MockService Properties部分中,将Incoming WSS设置为server ,如图18所示。
      图18.配置SOAP响应
      配置响应
    8. 单击Ctrl + S保存配置更新。
    9. 重新启动模拟服务。
    10. 重新启动Process Designer,并在测试SSL配置时打开您先前创建的服务。
    11. 转到“ 安全性”选项卡并更新以下属性,如图19所示:
      • 为“ 验证”选择“ ”。
      • 客户端证书别名指定clientcertificate ,然后选中“ 签署请求”和“ 期望加密响应”
      • 指定servercertificate: serviceprovider.com作为服务器证书别名
      注意:确保清除证书别名的所有现有值。
      图19.为测试场景1配置SOAP安全性
      为测试场景1配置SOAP安全性
    12. 将更新保存到服务。
    13. 在调试模式下运行服务,并验证是否从Web服务提供商处收到了相同的响应。
    14. 如果收到java.net.ConnectException,请再次重新启动模拟服务。
    15. 转到Web服务提供者,并在Message Log下 ,您应该看到与完成的Web服务请求相对应的条目,如图20所示。
      图20.场景1中的SOAP请求消息
      方案1中的SOAP请求消息
    16. 双击条目以打开“邮件查看器”。
    17. 在各自的Raw部分下检查请求和响应消息。 在tequest消息中,您应该在SOAP Header元素内看到一个ds:Signature元素。 在响应消息中,您应该在SOAP Body元素内看到一个xenc:EncryptedData元素。

    测试方案2

    1. 在SOAP UI中,打开与模拟服务项目关联的WS-Security Configuration选项卡。
    2. 在“ 传出WS-Security”选项卡上,如下所述输入属性,但是首先删除Encryption项并为Signature添加一个项,如图21所示。
      • 密钥库serverkeystore.jks
      • 别名 :服务器证书
      • 密码WebAS
      • 密钥标识符类型二进制安全令牌
      • 签名算法,签名规范化摘要算法<默认>
      • 选中使用单个证书进行签名
      图21.方案2中的传出WS-Security签名
      方案2中的传出WS-Security签名
    3. 单击Ctrl + S保存配置更新。
    4. 重新启动模拟服务。
    5. 重新启动Process Designer并在测试SSL配置时打开先前创建的服务。
    6. 转到“ 安全性”选项卡并按如下所示更新属性,如图22所示:
      • 为“ 验证”选择“ ”。
      • 客户端证书别名指定clientcertificate
      • 指定servercertificate: serviceprovider.com 服务器证书别名 ,并检查加密的要求期待签名响应
      注意:确保清除证书别名的所有现有值。
      图22.为方案2配置SOAP安全性
      为安全性2配置SOAP安全性
    7. 将更新保存到服务。
    8. 在调试模式下运行服务,并验证是否从Web服务提供商处收到了相同的响应。
    9. 如果收到java.net.ConnectException,请重新启动模拟服务。
    10. 转到Web服务提供商,然后在Message Log(消息日志)下,您将看到与已完成的Web Services请求相对应的条目,如中所示。
      图23. SOAP请求消息场景1
      SOAP消息2
    11. 检查请求和响应消息各自的原始部分。 在Request消息中,您应该在SOAP Body中看到一个enc:EncryptedDataelement元素。 在Response消息中,您应该在SOAP Header看到一个ds:Signature元素。

    结论

    在本文中,您学习了如何配置IBM BPM,以便在使用Web服务集成组件与安全Web服务进行交互时启用WS-Security和传输层安全性。 使用SOAP UI之类的工具,您可以独立于实际的Web服务提供商的可用性而轻松地验证配置。

    致谢

    作者要感谢Raj Chaudhary对本文的详尽评论。


    翻译自: https://www.ibm.com/developerworks/bpm/library/techarticles/1309_balakrishnan/1309_balakrishnan.html

    展开全文
  • 在Nginx代理集群支持SSL。整体架构如下: SSL SSL(Secure Socket Layer,安全套接层) 简单来说是一种加密技术, 通过它, 我们可以在通信的双方上建立一个安全的通信链路, 因此数据交互的...WSS 是 Web Socket Secure...

    在Nginx代理集群支持SSL。整体架构如下:
    在这里插入图片描述

    SSL

    SSL(Secure Socket Layer,安全套接层) 简单来说是一种加密技术, 通过它, 我们可以在通信的双方上建立一个安全的通信链路, 因此数据交互的双方可以安全地通信, 而不需要担心数据被窃取. 关于 SSL 的深入知识, 可以看这篇文章: SSL/TLS协议运行机制的概述

    WSS

    WSS 是 Web Socket Secure 的简称, 它是 WebSocket 的加密版本. 我们知道 WebSocket 中的数据是不加密的, 但是不加密的数据很容易被别有用心的人窃取, 因此为了保护数据安全, 人们将 WebSocket 与 SSL 结合, 实现了安全的 WebSocket 通信, 即 WebSocket Secure.
    所以说 WSS 是使用 SSL 进行加密了的 WebSocket 通信技术.

    HTTPS

    其实 HTTPS 和 WSS 类似, HTTP 之于 HTTPS 就像 WebSocket 之于 WebSocket Secure.
    HTTP 协议本身也是明文传输, 因此为了数据的安全性, 人们利用 SSL 作为加密通道, 在 SSL 之上传递 HTTP 数据, 因此 SSL 加密通道上运行的 HTTP 协议就被称为 HTTPS 了.

    总结

    SSL 是基础, 在 SSL 上运行 WebSocket 协议就是 WSS; 在 SSL 上运行 HTTP 协议就是 HTTPS.

    nginx配置(给出全部配置)

    window/linux通用

    
    #user  nobody;
    worker_processes  1;
    
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;
    
    
    events {
        worker_connections  1024;
    	accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on
    	multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off
    	#use epoll;  #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport 
    }
    
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
        #                  '$status $body_bytes_sent "$http_referer" '
        #                  '"$http_user_agent" "$http_x_forwarded_for"';
    
        #access_log  logs/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
    	
    	upstream runx {
    		server 192.168.51.247;
    	}
    	
        server {
            listen       808;
            server_name  localhost;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            #location / {
             #   root   html;
              #  index  index.html index.htm;
            #}
    
    		location / {
    		   proxy_connect_timeout 15s;
    		   proxy_send_timeout 15s;
    		   proxy_read_timeout 30m;
    		   proxy_set_header Host $host;
    		   proxy_set_header X-Real-IP $remote_addr;
    		   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    		   proxy_set_header Connection "";
    		   proxy_set_header Upgrade $http_upgrade;
    		   proxy_set_header Connection "upgrade";
    		   proxy_pass http://runx; #请求转向runx 定义的服务器列表
    		   client_max_body_size 1024m;
    		}
    		
    		
            #error_page  404              /404.html;
    
            # redirect server error pages to the static page /50x.html
            #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    
            # proxy the PHP scripts to Apache listening on 127.0.0.1:80
            #
            #location ~ \.php$ {
            #    proxy_pass   http://127.0.0.1;
            #}
    
            # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
            #
            #location ~ \.php$ {
            #    root           html;
            #    fastcgi_pass   127.0.0.1:9000;
            #    fastcgi_index  index.php;
            #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            #    include        fastcgi_params;
            #}
    
            # deny access to .htaccess files, if Apache's document root
            # concurs with nginx's one
            #
            #location ~ /\.ht {
            #    deny  all;
            #}
        }
    
    
        # another virtual host using mix of IP-, name-, and port-based configuration
        #
        #server {
        #    listen       8000;
        #    listen       somename:8080;
        #    server_name  somename  alias  another.alias;
    
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
    
    
        # HTTPS server
        #
        server {
            listen       443 ssl;
            server_name  socket.square.huoxinghy.com;//域名配置
    
            ssl_certificate      C:\Users\ASDFGJA\Desktop\215061298600605\215061298600605.pem;//证书路径linux中可以放在  /etc/nginx/ssl
            ssl_certificate_key  C:\Users\ASDFGJA\Desktop\215061298600605\215061298600605.key;
    
            ssl_session_cache    shared:SSL:1m;
            ssl_session_timeout  5m;
    
            ssl_ciphers  HIGH:!aNULL:!MD5;
            ssl_prefer_server_ciphers  on;
    
            location / {
                #root   html;
                #index  index.html index.htm;
    		   proxy_connect_timeout 15s;
    		   proxy_send_timeout 15s;
    		   proxy_read_timeout 30m;
    		   proxy_set_header Host $host;
    		   proxy_set_header X-Real-IP $remote_addr;
    		   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    		   proxy_set_header Connection "";
    		   proxy_set_header Upgrade $http_upgrade;
    		   proxy_set_header Connection "upgrade";
    		   proxy_pass http://runx; #请求转向runx 定义的服务器列表
    		   client_max_body_size 1024m;
            }
    		
        }
    
    }
    
    
    展开全文
  • ws://127.0.0.1:3000', {username:'test_user', password:'test_password'} ); client.subscribe("mqtt/test"); client.on("message", function(topic, payload) { alert(...
  • After installing with docker, the webUI comes up blank with nothing but a white page. Here's what I've done to troubleshoot. <pre><code> curl --insecure -vvv --user test:test ...
  • tls": { "certificate": "REDACTED-DOMAIN.crt", "key": "REDACTED-DOMAIN.key", "dhparam": "dhparam.pem", "chain_certificates": [ "...
  • web_admin: true captcha: false ciphers: CIPHERS_INTERMEDIATE protocol_options: PROTOCOL_OPTIONS_INTERMEDIATE tls: false - ip: "::" port: 5280 tls: false module: ejabberd_http web_...
  • s tightly tangled with node packages like (ws, fs, tls, ...) which are not available on the browser side. We can solve this problem after applying webpack2+ <ul><li>...
  • websocketpp wss客户端代码

    千次阅读 热门讨论 2018-11-30 11:09:06
    不使用ssl,即使用ws非wss #include &lt;websocketpp/config/asio_no_tls_client.hpp&gt; #include &lt;websocketpp/client.hpp&gt; 使用ssl,即使用wss #include &lt;webso...
  • <div><p>koolss 该如何配置...用的ws-tls-web 但是在客户端中好像怎么输入都是错的 不知道是要直接配置文件还是怎么滴 还是说它那个不支持 大佬有玩过吗</p><p>该提问来源于开源项目:loyess/Shell</p></div>
  • at com.ibm.ws.webcontainer.WSWebContainer.addWebApp(WSWebContainer.java:904) ~[com.ibm.ws.webcontainer.jar:?] at com.ibm.ws.webcontainer.WSWebContainer.addWebApplication(WSWebContainer.java:789) ~...
  • Mattermost does not use TLS per default, so the default value should be ws:// and not wss://, and a note should be added about this.</p><p>该提问来源于开源项目:mattermost/docs</p></div>
  • 在前面也有好多篇文章介绍了在Web Service调用过程中用WS-Security来保证接口交互过程的安全性,值得注意的是,该种方式基于的传输协议仍然是Http,采用这种方式可扩展性和数据交互效率比较高;另外一种实现方式就是...
  • 在前面也有好多篇文章介绍了在Web Service调用过程中用WS-Security来保证接口交互过程的安全性,值得注意的是,该种方式基于的传输协议仍然是Http,采用这种方式可扩 展性和数据交互效率比较高;另外一种实现方式...
  • HttpsURLConnection

    2015-11-15 14:07:59
    在前面也有好多篇文章介绍了在Web Service调用过程中用WS-Security来保证接口交互过程的安全性,值得注意的是,该种方式基于的传输协议仍然是Http,采用这种方式可扩 展性和数据交互效率比较高;另外一种实现方式...
  • 在前面也有好多篇文章介绍了在Web Service调用过程中用WS-Security来保证接口交互过程的安全性,值得注意的是,该种方式基于的传输协议仍然是Http,采用这种方式可扩展性和数据交互效率比较高;另外一种实现方式就是...
  • 在前面也有好多篇文章介绍了在Web Service调用过程中用WS-Security来保证接口交互过程的安全性,值得注意的是,该种方式基于的传输协议仍然是Http,采用这种方式可扩展性和数据交互效率比较高;另外一种实现方式就是...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 149
精华内容 59
关键字:

tlswebws