国密双秘钥体系

国密双秘钥体系的“双”体现在,申请人是有两个证书的,一个是用于认证的证书,一个是用于加密的证书。

1、用于认证的证书的生成:用户自行生成一对公私钥,其中自己保留私钥用于签名,公钥发送给CA机构,请CA来对其签名,生成该用户的签名证书。

2、用于加密的证书的生成:该证书由CA机构从其自身KMC中为用户获取一对公私钥,同时,自己备份这对公私钥。然后,CA将公钥进行签名生成加密证书,CA使用该用户的签名证书将加密私钥、加密证书等进行加密后,返回给用户。

注意:1、CA有用户用于加解密的公私钥对,因此CA是可以解密用户密文的。

2、CA没有用于签名的用户私钥备份,用户签名私钥丢失不能再生,但由于签名证书是公开的,因此其之前签名过的东西依然有效。

如果你想在 libcurl 中使用 gmSSL 进行向认,可以按照以下步骤进行操作: 1. 生成服务器证书私钥。可以使用 OpenSSL 工具生成证书私钥。例如: ``` openssl req -newkey rsa:2048 -nodes -keyout server.key -out server.csr openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt ``` 2. 生成客户端证书私钥。可以使用 OpenSSL 工具生成证书私钥。例如: ``` openssl req -newkey rsa:2048 -nodes -keyout client.key -out client.csr openssl x509 -req -days 365 -in client.csr -signkey client.key -out client.crt ``` 3. 将服务器证书私钥放到服务器端,将客户端证书私钥放到客户端。 4. 在服务器端,启动一个 HTTPS 服务器,并加载服务器证书私钥。可以使用 OpenSSL 或其他 HTTP 服务器软件来实现。在这里,我们假设你已经启动了一个名为 `example.com` 的 HTTPS 服务器,并将服务器证书私钥保存在 `server.crt` 和 `server.key` 文件中。 5. 在客户端,使用 libcurl 发起 HTTPS 请求,并加载客户端证书私钥。可以使用以下代码来实现: ``` #include <curl/curl.h> #include <openssl/gmssl.h> int main() { CURL *curl; CURLcode res; curl_global_init(CURL_GLOBAL_DEFAULT); curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); curl_easy_setopt(curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2); curl_easy_setopt(curl, CURLOPT_SSL_CIPHER_LIST, "ECDHE-ECDSA-AES128-GCM-SHA256"); curl_easy_setopt(curl, CURLOPT_CAINFO, "ca-bundle.crt"); curl_easy_setopt(curl, CURLOPT_SSLCERT, "client.crt"); curl_easy_setopt(curl, CURLOPT_SSLKEY, "client.key"); res = curl_easy_perform(curl); curl_easy_cleanup(curl); } curl_global_cleanup(); return 0; } ``` 在上面的示例代码中,我们使用了 `CURLOPT_SSLCERT` 和 `CURLOPT_SSLKEY` 选项来加载客户端证书私钥。需要注意的是,客户端证书需要是 PEM 格式,并且需要包含完整的证书链。 同时,我们还设置了 `CURLOPT_CAINFO` 选项来加载根证书。如果根证书不在系统的默认位置,需要将其保存为 PEM 格式,并指定其路径。 需要注意的是,向认需要在服务器端和客户端都进行配置,才能实现向认的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值