gpt4 book ai didi

c - axis2c SSL 客户端身份验证

转载 作者:太空宇宙 更新时间:2023-11-03 15:00:44 25 4
gpt4 key购买 nike

我有一个使用远程轴 Web 服务的 c 应用程序,当我使用 http 协议(protocol)连接到服务时没有问题,但是当我想使用 ssl 时,我无法调用服务操作 & 它只返回 NULL。
这是我的客户端应用程序的 axis2.xml 的一部分:

 <transportReceiver name="http" class="axis2_http_receiver">
<parameter name="port" locked="false">6060</parameter>
<parameter name="exposeHeaders" locked="true">false</parameter>
</transportReceiver>

<transportReceiver name="https" class="axis2_http_receiver">
<parameter name="port" locked="false">6060</parameter>
<parameter name="exposeHeaders" locked="true">false</parameter>
</transportReceiver>


<transportSender name="http" class="axis2_http_sender">
<parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
<parameter name="xml-declaration" insert="false"/>
<!--parameter name="Transfer-Encoding">chunked</parameter-->
<!--parameter name="HTTP-Authentication" username="" password="" locked="true"/-->
<!--parameter name="PROXY" proxy_host="127.0.0.1" proxy_port="8080" proxy_username="" proxy_password="" locked="true"/-->
</transportSender>

<transportSender name="https" class="axis2_http_sender">
<parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
<parameter name="xml-declaration" insert="false"/>
</transportSender>

这个配置有没有错误?我还需要更多吗?
我的服务器使用自签名证书,是否会导致问题?
另一个问题是,如果我想启用客户端身份验证,如何在我的代码中(而不是在 axis2.xml 中)以编程方式传递所需的参数(SERVER_CERT、KEY_FILE、SSL_PASSPHRASE)?

编辑:
我通过普通 SSL 成功连接到服务(没有客户端身份验证),但是当我想使用客户端身份验证时,客户端失败并显示以下日志:

[Sun Mar 16 12:49:10 2014] [info]  Starting addressing out handler
[Sun Mar 16 12:49:10 2014] [debug] ..\..\src\modules\mod_addr\addr_out_handler.c(133) No action present. Stop processing addressing
[Sun Mar 16 12:49:10 2014] [debug] ..\..\src\core\transport\http\sender\http_transport_sender.c(246) ctx_epr:https://mysite.com/axis2/services/myService
[Sun Mar 16 12:49:10 2014] [debug] ..\..\src\core\transport\http\sender\http_transport_sender.c(805) using axis2 native http sender.
[Sun Mar 16 12:49:10 2014] [debug] ..\..\src\core\transport\http\sender\http_sender.c(416) msg_ctx_id:urn:uuid:fe18bf10-6611-4af9-85f6-b062bd7eb231
[Sun Mar 16 12:49:14 2014] [debug] ..\..\src\core\transport\http\sender\http_client.c(571) http client , response timed out
[Sun Mar 16 12:49:14 2014] [error] ..\..\src\core\transport\http\sender\http_client.c(574) Response timed out
[Sun Mar 16 12:49:14 2014] [error] ..\..\src\core\transport\http\sender\http_sender.c(1381) status_code < 0
[Sun Mar 16 12:49:14 2014] [error] ..\..\src\core\engine\engine.c(179) Transport sender invoke failed

最佳答案

要诊断问题,您可以查看日志文件。默认情况下,它位于 axis2c/logs 目录中,并且在您传入 axutil_env_create_all 函数时它有一个名称。

您不能在同一个端口上同时使用“http”和“https”两种传输方式。最好在 axis2.xml 中使用“http”或“https”传输。

以编程方式设置 SSL 参数(例如 SERVER_CERT):

axutil_property_t* ca_prop = axis2_property_create(env);
axutil_property_set_value(ca_prop, env, axis2_strdup("/path/to/ca.pem", env));
axis2_options_set_property(options, env, "SERVER_CERT", ca_prop);

这是一篇关于如何为 SSL 配置 Axis2/C 的好文章:http://people.apache.org/~dumindu/docs/HowToConfigureSSL.html

关于c - axis2c SSL 客户端身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22322038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com