1. Openssl介紹
自己網上找去吧,我說的不好!
2. 安裝
1、下載地址:http://www.openssl.org/source/ ;下一個最新新版本的OpenSSL,版本是:openssl-1.0.2-beta1.tar.gz
2、在下載的目錄中,用命令執行:tar -xzf openssl-openssl-1.0.2-beta1.tar.gz
3、進入解壓的目錄:openssl-1.0.2-beta1 [.......]#cd openssl-1.0.2-beta1
4、[.....openssl-1.0.2-beta1]# ./config --prefix=/usr/local/openssl
5、[...../openssl-1.0.2-beta1]# ./config -t
6、[...../openssl-1.0.2-beta1]# make depend (時間很長)
7、[.../openssl-1.0.2-beta1]# make (時間很長,慢慢等待)
8、[.../openssl-1.0.2-beta1]# maketest
9、[.../openssl-1.0.2-beta1]# makeinstall
10、[...../openssl-1.0.2-beta1]# cd /usr/local
11、[/usr/local]# ln -s openssl ssl
12、在/etc/ld.so.conf檔案的最後面,添加如下內容:/usr/local/openssl/lib
13...]# ldconfig
14添加OPESSL的環境變數:
在etc/的profile的最後一行,添加:
export OPENSSL=/usr/local/openssl/bin
export PATH=$OPENSSL:$PATH:$HOME/bin
15退出命令介面,再從新登入。
16、以上OPENSSL就安裝完畢,下面進行一些檢查。
17依次如下執行:
[root@localhost /]# cd /usr/local
[root@localhost local]# ldd /usr/local/openssl/bin/openssl
會出現類似如下資訊:
linux-vdso.so.1 => (0x00007fff3bc73000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fc5385d7000)
libc.so.6 => /lib64/libc.so.6 (0x00007fc538279000)
/lib64/ld-linux-x86-64.so.2 (0x00007fc5387db000)
18查看路徑
...]# which openssl
/usr/local/openssl/bin/openssl
19、...]# openssl version
OpenSSL 1.0.2-beta1 24 Feb 2014
3. 錯誤情況
自己寫的程式出現這個(fatal error: openssl/sha.h: No such fileor directory)或者相似的問題,一開始以為是環境變數的問題,重裝了幾次,後來差了網路才知道問題所在,都是沒有安裝libssl-dev,libssl-dev包含libraries, header files and manpages,他是openssl的一部分,而openssl對ssl進行了實現。解決方案:使用sudo apt-get install libssl-dev來安裝libssl-dev即可註:部分為網上抄襲!
下面來看使用方法,產生RSA
3.1 公私密金鑰對產生
命令解析:openssl genrsa[-out filename] [-passout arg] [-des] [-des3] [-idea] [-f4][-3] [-rand file(s)] [numbits]
OPTIONS
-out filename 私人密鑰輸入檔案名稱,預設為標準輸出。
-passout arg 參看指令dsa裡面的passout參數說明 -des|-des3|-idea 採用什麼密碼編譯演算法來加密我們的密鑰。一般會要你輸入保護密碼。 如果這三個中一個也沒set, 我們的密鑰將不被加密而輸入。
-F4|-3 使用的公用組件,一種是3, 一種是F4, 我也沒弄懂這個option是什麼意思。
-randfile(s) 產生key的時候用過seed的檔案,可以把多個檔案用冒號分開一起做seed.
-numbits 指明產生的參數的長度。必須是本指令的最後一個參數。如果沒有指明,則產生512bit長的參數。 研究過RSA演算法的人肯定知道,RSA的私人密鑰其實就是三個數字,其中倆個是質數。這倆個呢,就叫prime numbers.產生RSA私人密鑰的關鍵就是產生這倆。還有一些其他的參數,引導著整個私人密鑰產生的過程。因為產生私人密鑰過程需要很多隨機數,這個過程的時間是不固定的。
//root@ubuntu:/mnt/hgfs/windows_linux/AlipayEx/study/opensslstudy/study#openssl genrsa -out RSAPrivateKey.pem 1024
//root@ubuntu:/mnt/hgfs/windows_linux/AlipayEx/study/opensslstudy/study#openssl rsa -in RSAPrivateKey.pem -pubout -out RSAPublicKey.pem
3.2 讀取密鑰
PEM_read_RSAPrivateKey
PEM_read_RSA_PUBKEY
具體參數看文檔去吧!
3.3 加解密
公開金鑰加密,私密金鑰解密
RSA_public_encrypt
RSA_private_decrypt
具體參數看文檔去吧!
3.4 簽名
私密金鑰簽名,公開金鑰驗簽
SHAwithRSA
1.SHA1M(自己封裝的)
2. RSA_sign(/*sha1withRSA第一個參數為NID_sha1,第二第三個參數為明文的sha1摘要及長度SA_verify