日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

在Windows下安装GmSSL

發布時間:2023/12/10 windows 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在Windows下安装GmSSL 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文屬于《GmSSL國密加密算法庫使用系列教程》之一,歡迎查看其它文章。

在Windows下安裝GmSSL

  • 一、關于GmSSL
  • 二、編譯工具準備
    • 1、安裝VS2017
    • 2、安裝ActivePerl
    • 3、安裝NASM
  • 三、GmSSL源碼準備
  • 四、編譯與安裝GmSSL
    • 1、進入GmSSL源碼目錄
    • 2、配置編譯生成64位的庫
    • 3、編譯
    • 4、安裝
    • 5、配置環境變量
  • 五、解決編譯報錯

一、關于GmSSL

GmSSL是一個開源的密碼工具箱,支持SM2/SM3/SM4/SM9/ZUC等國密(國家商用密碼)算法、SM2國密數字證書及基于SM2證書的SSL/TLS安全通信協議,支持國密硬件密碼設備,提供符合國密規范的編程接口與命令行工具,可以用于構建PKI/CA、安全通信、數據加密等符合國密標準的安全應用。GmSSL項目是OpenSSL項目的分支,并與OpenSSL保持接口兼容。因此GmSSL可以替代應用中的OpenSSL組件,并使應用自動具備基于國密的安全能力。GmSSL項目采用對商業應用友好的類BSD開源許可證,開源且可以用于閉源的商業應用。

GmSSL項目由北京大學關志副研究員的密碼學研究組開發維護,項目源碼托管于GitHub。自2014年發布以來,GmSSL已經在多個項目和產品中獲得部署與應用,并獲得2015年度“一銘杯”中國Linux軟件大賽二等獎(年度最高獎項)與開源中國密碼類推薦項目。GmSSL項目的核心目標是通過開源的密碼技術推動國內網絡空間安全建設。

以上內容摘抄自GmSSL官網:http://gmssl.org/

大家都知道OpenSSL,主要是提供國際加密算法庫。但是在最新的OpenSSL 1.1.1以上版本,已經對國密算法提供了支持。

OpenSSL、GmSSL這倆提供的國密算法庫,去看了下代碼,代碼實現是不一樣的,屬于條條大路通羅馬。

二、編譯工具準備

1、安裝VS2017

按照此文進行安裝,《Visual Studio Community 2017安裝步驟(只裝C++)》。

主要使用它的編譯器,若已安裝,則跳過。

2、安裝ActivePerl

64位ActivePerl-5.26下載地址:https://www.jb51.net/softs/27286.html#downintro2

進行安裝,安裝類型選擇“Typical”,其他默認,最后一步安裝時間較長。

在cmd中,輸入命令查看perl版本號。

perl -v

表明安裝成功。

3、安裝NASM

nasm-2.15.05下載地址:https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/win64/

以管理員身份運行nasm-2.15.05-installer-x64.exe,進行默認安裝即可。

并將NASM安裝目錄添加至Windows系統環境變量Path中。

三、GmSSL源碼準備

下載GmSSL源碼:https://github.com/guanzhi/GmSSL

四、編譯與安裝GmSSL

以管理員權限,打開VS Tools中“適用于VS 2017 的x64 本機工具命令提示”。

1、進入GmSSL源碼目錄

cd /d D:\GmSSL-master\GmSSL-master

2、配置編譯生成64位的庫

若需生成32位,則“perl Configure VC-WIN32”。

perl Configure VC-WIN64A

3、編譯

nmake

若報錯,參考第五節解決編譯報錯。
直到編譯成功后繼續。

4、安裝

nmake install

若前面不是以管理員權限運行,“適用于VS 2017 的x64 本機工具命令提示”,則此處會報錯。

GmSSL默認安裝路徑為C:\Program Files\GmSSL

5、配置環境變量

將GmSSL命令行工具路徑C:\Program Files\GmSSL\bin,添加到環境變量中。

在cmd中,輸入命令查看GmSSL版本。

gmssl version

至此,GmSSL安裝完畢。

五、解決編譯報錯

報錯如下:

libcrypto-1_1-x64.def : error LNK2001: 無法解析的外部符號 EVP_get_ciphernames libcrypto-1_1-x64.def : error LNK2001: 無法解析的外部符號 EVP_get_digestnames libcrypto.lib : fatal error LNK1120: 2 個無法解析的外部命令 NMAKE : fatal error U1077: “link”: 返回代碼“0x1

原因:

EVP_get_ciphernames、EVP_get_digestnames這2個函數位于GmSSL-master\include\openssl\evp.h,似乎是沒找到這2個函數的實現。

解決辦法:

在GmSSL的github倉庫中,在GmSSL-master/crypto/evp/names2.c文件中,歷史版本有這2個函數的實現,新版本不知道什么原因,這2個函數實現被刪除了。

所以,我們只需要從names2.c文件的歷史版本中,將函數實現拷貝出來,追加到新names2.c文件末尾,再次重新編譯即可。

具體解決步驟:

為方便大家,特意將需要拷貝的代碼,列出來,如下:

static void cipher_name_len(const EVP_CIPHER *cipher, const char *from,const char *to, void *x) {*((int *)x) += strlen(EVP_CIPHER_name(cipher)); }static void cipher_name(const EVP_CIPHER *cipher, const char *from,const char *to, void *x) {strcat((char *)x, EVP_CIPHER_name(cipher)); }char *EVP_get_ciphernames(int aliases) {char *ret = NULL;int len = 0;EVP_CIPHER_do_all_sorted(cipher_name_len, &len);ret = OPENSSL_zalloc(len);if (!ret) {return NULL;}EVP_CIPHER_do_all_sorted(cipher_name, ret);return ret; }char *EVP_get_digestnames(int aliases) {return "sm3:sha1:sha256"; }

(1)首先將上述4個函數,追加至names2.c文件末尾。
(2)然后執行一下清除

nmake clean

(3)再執行編譯

nmake

就可以發現,已經可以編譯通過了。

思考:

在win下編譯報這2個函數未實現,但是后來在Linux下編譯,在沒有改代碼的前提下,居然可以直接編譯通過,看來這個與平臺還有關系。



若對你有幫助,歡迎點贊、收藏、評論,你的支持就是我的最大動力!!!

同時,阿超為大家準備了豐富的學習資料,歡迎關注公眾號“超哥學編程”,即可領取。

總結

以上是生活随笔為你收集整理的在Windows下安装GmSSL的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。