國密SSL協議之C語言程式設計

2021-10-24 01:47:05 字數 2735 閱讀 6419

openssl支援標準的ssl協議,但並不支援國密ssl協議。本文描述了c語言使用國密版openssl開發乙個簡單的客戶端程式,連線國密web**,傳送http請求,並接收http應答。

centos7 x64。

將國密openssl 展開為/usr/local/gmssl_10

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define maxbuf 4096

int main(int argc, char *ar**)

if (argc == 8)

char *addr = ar**[1];

int port = atoi(ar**[2]);

char *uri = ar**[3];

char *sigcrt = ar**[4];

char *sigkey = ar**[5];

char *enccrt = ar**[6];

char *enckey = ar**[7];

// 國密ssl

初始化

gm_load_library();

// 國密ssl

生成ssl_ctx

編譯gcc -o test -ldl -lm test.c /usr/local/gmssl_10/lib/libssl.a /usr/local/gmssl_10/lib/libcrypto.a -i/usr/local/gmssl_10/include 執行

單向國密

ssl**

./test demo.gmssl.cn 443 /

雙向國密

ssl**

./test demo.gmssl.cn 444 /cert.jsp sig.crt sig.key enc.crt enc.key

1)搭建單向/雙向國密web伺服器,可以參見提供nginx/apache/tomcat支援。

2)申請國密雙證書,參見

3)是乙個單向國密web**

4):444是乙個雙向國密web**

通過使用國密openssl,c語言很容易程式設計來使用國密ssl連線國密web**。www.gmssl.cn提供了全部免費的測試元件,並且支援雙向國密ssl,可供學習和測試。

編譯nginx支援國密SSL協議

pen ssl ope nssl 修改為 openssl openssl 修改為 openss l o pens sl 修 改為提交後儲存sm2.demo1.gmssl.cn.zip 傳到伺服器 root 下解壓 unzip sm2.demo1.gmssl.cn.zip d root sm2.dem...

http協議C語言程式設計例項

http客戶端程式 httpclient.c include include include include include include include include include include include include httpclient.c 開始 功能 搜尋字串右邊起的第乙個匹...

HTTP協議的C語言程式設計實現例項

客戶程式發起連線請求 if connect sockfd,struct sockaddr server addr sizeof struct sockaddr 1 連線 printf s request 準備request,將要傳送給主機 取得真實的檔名 if host file host file...