Gsoap 下使用HTTPS协议的Web Service

Gsoap 下如何使用HTTPS协议

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

如在电脑目录下C:\gsoap-2.8\gsoap\samples\ssl



其中如何生存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])



你可能感兴趣的:(C++)