当前位置: 首页 > >

Gsoap 下使用HTTPS协议的Web Service

发布时间:

Gsoap 下如何使用HTTPS协议


这两天在网上找了许多,零零散散的比较坑。最后,尽然在gsoap的安装目录下找到了一个例子,完整过程都有。(还是要看官方自带的文档和例子啊


如在电脑目录下C:gsoap-2.8gsoapsamplesssl






其中如何生存openssl密钥在README.txt中有说明,而具体的服务端、客户端例子在sslserver.c、sslclient.c文件中。


而这里要说明的是样例中生成密钥的脚本是Linux下的shell,而我需要在windows下生成,这里打开其中root.sh、cert.sh两个脚本,不难发现里面的命令也基本是openssl相关的命令(我这里用的是OpenSSL,没有使用GNUTLS)


这里列举下Linux->windows下的转换关系


root.sh:


openssl req -newkey rsa:1024 -sha1 -keyout rootkey.pem -out rootreq.pem

openssl x509 -req -in rootreq.pem -sha1 -extfile openssl.cnf -extensions v3_ca -signkey rootkey.pem -out cacert.pem -days 1095

type cacert.pem rootkey.pem > root.pem

openssl x509 -subject -issuer -dates -noout -in root.pem


cert.sh:


openssl req -newkey rsa:1024 -sha1 -keyout clientkey.pem -out clientreq.pem
openssl req -newkey rsa:1024 -sha1 -keyout serverkey.pem -out serverreq.pem


?openssl x509 -req -in clientreq.pem -sha1 -extfile openssl.cnf -extensions usr_cert -CA root.pem -CAkey root.pem -CAcreateserial -out clientcert.pem -days 1095
openssl x509 -req -in serverreq.pem -sha1 -extfile openssl.cnf -extensions usr_cert -CA root.pem -CAkey root.pem -CAcreateserial -out servercert.pem -days 1095


type clientcert.pem clientkey.pem cacert.pem > client.pem
type servercert.pem serverkey.pem cacert.pem > server.pem


openssl x509 -subject -issuer -dates -noout -in client.pem
openssl x509 -subject -issuer -dates -noout -in server.pem


生成相关文件后,同样注意代码中调用service接口用到的函数参数,我这里列举下我的:


客户端:


soap_ssl_client_context(&add_soap, SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION | SOAP_SSL_SKIP_HOST_CHECK , "client.pem", "1234", "cacert.pem", NULL,NULL)


服务端:


soap_ssl_server_context(&add_soap, SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION , "server.pem", "1234", "cacert.pem", NULL, NULL, NULL, argv[0])







友情链接: