若該文爲原創文章,轉載請註明原文出處
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/117503951linux
紅胖子(紅模仿)的博文大全:開發技術集合(包含Qt實用技術、樹莓派、三維、OpenCV、OpenGL、ffmpeg、OSG、單片機、軟硬結合等等)持續更新中…(點擊傳送門)算法
Windows上mingw32版本的openssl的編譯是屬於比較棘手的,OpenSSL自己不提供支持.。數據庫
OpenSSL是一個開放源代碼的軟件庫包,應用程序可使用這個包來進行安全通訊,避免竊聽,同時確認另外一端鏈接者的身份。這個包普遍被應用在互聯網的網頁服務器上。
SSL是Secure Sockets Layer(安全套接層協議)的縮寫,能夠在Internet上提供祕密性傳輸。Netscape公司在推出第一個Web瀏覽器的同時,提出了SSL協議標準。其目標是保證兩個應用間通訊的保密性和可靠性,可在服務器端和用戶端同時實現支持。已經成爲Internet上保密通信的工業標準。
SSL能使用戶/服務器應用之間的通訊不被攻擊者竊聽,而且始終對服務器進行認證,還可選擇對用戶進行認證。SSL協議要求創建在可靠的傳輸層協議(TCP)之上。SSL協議的優點在於它是與應用層協議獨立無關的,高層的應用層協議(例如:HTTP,FTP,TELNET等)能透明地創建於SSL協議之上。SSL協議在應用層協議通訊以前就已經完成加密算法、通訊密鑰的協商及服務器認證工做。在此以後應用層協議所傳送的數據都會被加密,從而保證通訊的私密性。windows
信息加密就是把明碼的輸入文件用加密算法轉換成加密的文件以實現數據的保密。加密的過程須要用到密鑰來加密數據而後再解密。沒有了密鑰,就沒法解開加密的數據。數據加密以後,只有密鑰要用一個安全的方法傳送。加密過的數據能夠公開地傳送。瀏覽器
加密也能保證數據的一致性。例如:消息驗證碼(MAC),可以校驗用戶提供的加密信息,接收者能夠用MAC來校驗加密數據,保證數據在傳輸過程當中沒有被篡改過。安全
加密的另一個用途是用來做爲我的的標識,用戶的密鑰能夠做爲他的安全驗證的標識。SSL是利用公開密鑰的加密技術(RSA)來做爲用戶端與服務器端在傳送機密資料時的加密通信協定。
OpenSSL包含一個命令行工具用來完成OpenSSL庫中的全部功能,更好的是,它可能已經安裝到你的系統中了。
OpenSSL是一個強大的安全套接字層密碼庫,Apache使用它加密HTTPS,OpenSSH使用它加密SSH,可是,你不該該只將其做爲一個庫來使用,它仍是一個多用途的、跨平臺的密碼工具。服務器
Eric A. Young和Tim J. Hudson自1995年開始編寫後來具備巨大影響的OpenSSL軟件包,這是一個沒有太多限制的開放源代碼的軟件包。Eric A. Young 和Tim J. Hudson是加拿大人,後來因爲寫OpenSSL功成名就以後就到大公司裏賺大錢去了。1998年,OpenSSL項目組接管了OpenSSL的開發工做,並推出了OpenSSL的0.9.1版,到目前爲止,OpenSSL的算法已經很是完善,對SSL2.0、SSL3.0以及TLS1.0都支持。
OpenSSL採用C語言做爲開發語言,這使得OpenSSL具備優秀的跨平臺性能,這對於廣大技術人員來講是一件很是美妙的事情,能夠在不一樣的平臺使用一樣熟悉的東西。OpenSSL支持Linux、Windows、BSD、Mac、VMS等平臺,這使得OpenSSL具備普遍的適用性。但習慣C語言總比使用C++從新寫一個跟OpenSSL相同功能的軟件包輕鬆很多。多線程
OpenSSL整個軟件包大概能夠分紅三個主要的功能部分:SSL協議庫、應用程序以及密碼算法庫。OpenSSL的目錄結構天然也是圍繞這三個功能部分進行規劃的。
做爲一個基於密碼學的安全開發包,OpenSSL提供的功能至關強大和全面,囊括了主要的密碼算法、經常使用的密鑰和證書封裝管理功能以及SSL協議,並提供了豐富的應用程序供測試或其它目的使用。函數
BIO機制是OpenSSL提供的一種高層IO接口,該接口封裝了幾乎全部類型的IO接口,如內存訪問、文件訪問以及Socket等。這使得代碼的重用性大幅度提升,OpenSSL提供API的複雜性也下降了不少。
OpenSSL對於隨機數的生成和管理也提供了一整套的解決方法和支持API函數。隨機數的好壞是決定一個密鑰是否安全的重要前提。
OpenSSL還提供了其它的一些輔助功能,如從口令生成密鑰的API,證書籤發和管理中的配置文件機制等等。若是你有足夠的耐心,將會在深刻使用OpenSSL的過程慢慢發現不少這樣的小功能,讓你不斷有新的驚喜。工具
密鑰和證書管理是PKI的一個重要組成部分,OpenSSL爲之提供了豐富的功能,支持多種標準。
首先,OpenSSL實現了ASN.1的證書和密鑰相關標準,提供了對證書、公鑰、私鑰、證書請求以及CRL等數據對象的DER、PEM和BASE64的編解碼功能。OpenSSL提供了產生各類公開密鑰對和對稱密鑰的方法、函數和應用程序,同時提供了對公鑰和私鑰的DER編解碼功能。並實現了私鑰的PKCS#12和PKCS#8的編解碼功能。OpenSSL在標準中提供了對私鑰的加密保護功能,使得密鑰能夠安全地進行存儲和分發。
在此基礎上,OpenSSL實現了對證書的X.509標準編解碼、PKCS#12格式的編解碼以及PKCS#7的編解碼功能。並提供了一種文本數據庫,支持證書的管理功能,包括證書密鑰產生、請求產生、證書籤發、吊銷和驗證等功能。
事實上,OpenSSL提供的CA應用程序就是一個小型的證書管理中心(CA),實現了證書籤發的整個流程和證書管理的大部分機制。
OpenSSL實現了SSL協議的SSLv2和SSLv3,支持了其中絕大部分算法協議。 OpenSSL也實現了TLSv1.0,TLS是SSLv3的標準化版,雖然區別不大,但畢竟有不少細節不盡相同。
雖然已經有衆多的軟件實現了OpenSSL的功能,可是OpenSSL裏面實現的SSL協議可以讓咱們對SSL協議有一個更加清楚的認識,由於至少存在兩點:一是OpenSSL實現的SSL協議是開放源代碼的,咱們能夠追究SSL協議實現的每個細節;二是OpenSSL實現的SSL協議是純粹的SSL協議,沒有跟其它協議(如HTTP)協議結合在一塊兒,澄清了SSL協議的原本面目。
OpenSSL一共提供了8種對稱加密算法,其中7種是分組加密算法,僅有的一種流加密算法是RC4。這7種分組加密算法分別是AES、DES、Blowfish、CAST、IDEA、RC二、RC5,都支持電子密碼本模式(ECB)、加密分組連接模式(CBC)、加密反饋模式(CFB)和輸出反饋模式(OFB)四種經常使用的分組密碼加密模式。其中,AES使用的加密反饋模式(CFB)和輸出反饋模式(OFB)分組長度是128位,其它算法使用的則是64位。事實上,DES算法裏面不只僅是經常使用的DES算法,還支持三個密鑰和兩個密鑰3DES算法。
OpenSSL一共實現了4種非對稱加密算法,包括DH算法、RSA算法、DSA算法和橢圓曲線算法(EC)。DH算法通常用於密鑰交換。RSA算法既能夠用於密鑰交換,也能夠用於數字簽名,固然,若是你可以忍受其緩慢的速度,那麼也能夠用於數據加密。DSA算法則通常只用於數字簽名。
信息摘要
OpenSSL實現了5種信息摘要算法,分別是MD二、MD五、MDC二、SHA(SHA1)和RIPEMD。SHA算法事實上包括了SHA和SHA1兩種信息摘要算法。此外,OpenSSL還實現了DSS標準中規定的兩種信息摘要算法DSS和DSS1。
官網:http://distfiles.macports.org/openssl/
CSDN:https://download.csdn.net/download/qq21497936/11537079
QQ羣:1047134658(點擊「文件」搜索「openssl」,羣內與博文同步更新)
將qt的mingw和本機的perl拷貝到msys文件夾下,而後添加路徑
配置安裝路徑
此處卡了一個多小時,各類找緣由,原來是須要使用msys而不是msys2
在最上層Makefile找到變量PERL
直接修改以下圖:
繼續mingw32-make.exe
漫長的等待後,繼續報錯
仔細看是應用的問題,連接庫失敗多是,可是咱們須要的
查看編譯出的庫
其實測試程序編譯缺乏庫是路徑包含問題,屢次嘗試,仍是須要config的時候指定下路徑
./config --prefix=/usr/local --openssldir=/usr/local/openssl
mingw32-make.exe install -j4
編譯成功,編譯過程和安裝過程都很漫長,估計得二三十分鐘
順利編譯,此時爲了方便提取庫修改配置以下
./config --prefix=/home/yang/complie/install \ --openssldir=/home/yang/complie/install/openssl
試幾回,有可能會出現錯誤,多線程致使一些先後依賴的錯誤
mingw32-make.exe install -j4
議最後執行一次:
mingw32-make.exe install
成功後以下:
能夠測試如下:
Mingw32-make.exe test
時間也是很是長。
編譯出來的是靜態庫(注意:筆者重頭再來一遍,配置時加了shared參數也仍是靜態庫)。
修改頂層Makefile的Perl。
由msys2更換爲msys1.0。
配置時,須要加2個參數。
若該文爲原創文章,轉載請註明原文出處
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/117503951