2

我正在尝试创建一个使用 HTTPS 入站端点的流。

到目前为止,我设法做到以下几点:

  • 使用以下命令通过终端创建密钥库文件:

    keytool -genkey -alias mule -keyalg RSA -keystore keystore.jks

  • 将 keystore.jks 放在我的 mule app src/main/resources 目录中

  • 使用以下设置创建了一个全局 HTTPS 连接器:

在此处输入图像描述

  • 在我的 HTTP 入站端点中,选中“启用 HTTPS”复选框并选择我的新全局 HTTPS 连接器作为连接器参考。

我的问题是在访问所述端点时出现,让我们说 https://localhost:8082/getProducts

浏览器抛出此消息

SSL connection error
Unable to make a secure connection to the server. This may be a problem with the server,     or it may be requiring a client authentication certificate that you don't have.
Error 107 (net::ERR_SSL_PROTOCOL_ERROR): SSL protocol error.

在我的骡子日志中,我有以下内容:

ERROR 2013-04-23 12:08:55,451 [[integrador-catalogogit].connector.http.mule.default.receiver.02] org.mule.exception.DefaultSystemExceptionStrategy: Caught exception in Exception Strategy: Http Request line is malformed: "�?��?Qv??e]?.�t#?G??*?p?V*????stS��H?"
org.apache.commons.httpclient.ProtocolException: Http Request line is malformed: "�?��?Qv??e]?.�t#?G??*?p?V*????stS��H?"
at org.mule.transport.http.RequestLine.parseLine(RequestLine.java:52)
at org.mule.transport.http.HttpServerConnection.readRequest(HttpServerConnection.java:190)
at org.mule.transport.http.HttpMessageReceiver$HttpWorker.run(HttpMessageReceiver.java:155)
at org.mule.work.WorkerContext.run(WorkerContext.java:311)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:680)
ERROR 2013-04-23 12:08:55,467 [[integrador-catalogogit].connector.http.mule.default.receiver.03] org.mule.exception.DefaultSystemExceptionStrategy: Caught exception in Exception Strategy: Http Request line is malformed: "�?��?Qv???P?*?~c?q?6?]??W?[??��H?"
org.apache.commons.httpclient.ProtocolException: Http Request line is malformed: "�?��?Qv???P?*?~c?q?6?]??W?[??��H?"
at org.mule.transport.http.RequestLine.parseLine(RequestLine.java:52)
at org.mule.transport.http.HttpServerConnection.readRequest(HttpServerConnection.java:190)
at org.mule.transport.http.HttpMessageReceiver$HttpWorker.run(HttpMessageReceiver.java:155)
at org.mule.work.WorkerContext.run(WorkerContext.java:311)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:680)
ERROR 2013-04-23 12:08:55,469 [[integrador-catalogogit].connector.http.mule.default.receiver.03] org.mule.exception.DefaultSystemExceptionStrategy: Caught exception in Exception Strategy: Http Request line is malformed: "��U��Q�Qv?cN????;]<???-???^S???G[?��*�?�?�?�9�8�?�5�E�D�f�3�2�?�A���/��??�"
org.apache.commons.httpclient.ProtocolException: Http Request line is malformed: "��U��Q�Qv?cN????;]<???-???^S???G[?��*�?�?�?�9�8�?�5�E�D�f�3�2�?�A���/��??�"
at org.mule.transport.http.RequestLine.parseLine(RequestLine.java:52)
at org.mule.transport.http.HttpServerConnection.readRequest(HttpServerConnection.java:190)
at org.mule.transport.http.HttpMessageReceiver$HttpWorker.run(HttpMessageReceiver.java:155)
at org.mule.work.WorkerContext.run(WorkerContext.java:311)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:680)

可能我在服务器端或骡子端都缺少配置步骤。

我将非常感谢您的帮助。

编辑

我的 XML 最终看起来像这样

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:https="http://www.mulesoft.org/schema/mule/https" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:json="http://www.mulesoft.org/schema/mule/json" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:spring="http://www.springframework.org/schema/beans" xmlns:core="http://www.mulesoft.org/schema/mule/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="CE-3.3.1" xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd 
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd 
http://www.mulesoft.org/schema/mule/https http://www.mulesoft.org/schema/mule/https/current/mule-https.xsd 
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd 
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd ">
    <https:connector name="HTTP_HTTPS" cookieSpec="netscape" validateConnections="true" sendBufferSize="0" receiveBufferSize="0" receiveBacklog="0" clientSoTimeout="10000" serverSoTimeout="10000" socketSoLinger="0" proxyHostname="localhost" proxyPort="80" doc:name="HTTP\HTTPS">
        <https:tls-client path="keystore.jks" storePassword="1234"/>
        <https:tls-key-store path="keystore.jks" keyPassword="1234" storePassword="1234"/>
        <https:tls-server path="keystore.jks" storePassword="1234"/>
    </https:connector>
    <flow name="getProducts" doc:name="getProducts">
        <https:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8082" path="getProducts" doc:name="HTTP" connector-ref="HTTP_HTTPS"/>
        <json:json-to-object-transformer returnClass="Codefuel.parameters.RequestParameters" doc:name="JSON to Object"/>
        <component class="Codefuel.product.mulesoft.GetProductByParameters" doc:name="GetProductByParameters"/>
        <json:object-to-json-transformer doc:name="Object to JSON"/>
    </flow>
</mule>
4

2 回答 2

1

我已经使用您问题中的命令(密码太短)创建了一个密钥库,并在 Mule 3.4 上部署了您的配置(除了我删除了123456and ,因为我没有该类)并且它运行良好。1234json:json-to-object-transformercomponent

我可以curl -k https://localhost:8082/getProducts并得到答复。所以一定有其他你没有展示的东西会引起麻烦。

于 2013-04-23T17:46:18.767 回答
0

我有这个异常:org.mule.exception.DefaultSystemExceptionStrategy:在异常策略中捕获异常:Http 请求行格式错误:(疯狂的字符集字符)

我滚动直到我意识到我的 http 服务位于 https 服务的同一个端口。更改端口并重试,它对我有用。

于 2014-07-29T14:40:31.190 回答