linux 安装jeakens_Chapter 2. OpenSSL的安装和配置学习笔记
Chapter 2. OpenSSL的安裝和配置學習筆記
2.1 在linux上面安裝OpenSSL
我還是做點No paper事情比較在行,正好和老師的課程接軌一下。
以前嘗試過在Windows上面安裝過openSSL,這次正好在Linux上面實現一下。
希望各位園友門糾錯,征求意見中。
2.1.1 安裝OpenSSL的系統環境和編譯環境
測試環境:Linux MINT 16 Petra
$ lsb_release -a #查看linux發行版本系統信息
No LSB modules are available.
Distributor ID:LinuxMint
Description:Linux Mint 16 Petra
Release:16
Codename:petra
安裝OpenSSL所需:ANSI C 編譯器(推薦GCC)、 Perl5(或5以上)、 make(幾乎每個linux發行版本都具有)
LinuxMint 16 自帶perl 5,不需穴ky"http://www.it165.net/qq/" target="_blank" class="keylink">qqwstewo6zI57n7w7vT0LXEu7CjrNOmuMPQ6NKqsLLXsHBlcmw8YnIgLz6yzr+8aHR0cDovL29zLjUxY3RvLmNvbS9hcnQvMjAwOTEyLzE3MjkwMy5odG0g0tSx4NLrtcTUtMLrtcTQzsq9sLLXsDwvcD4KCjxwcmUgY2xhc3M9"brush:java;">$ perl -v #查看perl版本信息
This is perl 5, version 14, subversion 2 (v5.14.2) built for x86_64-linux-gnu-thread-multi
(with 80 registered patches, see perl -V for more detail)
Copyright 1987-2011, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
$ gcc -v #查看gcc版本信息
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.8.1-10ubuntu9' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu9)
2.1.2 linux下openSSL的安裝
/桌面/openssl-1.0.1g $ ls#解壓openssl-1.0.1g.tar.gz之后得到以下文件
ACKNOWLEDGMENTS CHANGES.SSLeay doc include INSTALL.NW INSTALL.WCE Makefile.org NEWS PROBLEMS ssl VMS
apps config engines INSTALL INSTALL.OS2 LICENSE Makefile.shared openssl.doxy README test
bugs Configure e_os2.h install.com INSTALL.VMS MacOS makevms.com openssl.spec README.ASN1 times
certs crypto e_os.h INSTALL.DJGPP INSTALL.W32 Makefile ms os2 README.ENGINE tools
CHANGES demos FAQ INSTALL.MacOS INSTALL.W64 Makefile.bak Netware perl shlib util
~/桌面/openssl-1.0.1g $ ./config --prefix=/usr/local/openssl#OpenSSL配置文件,配置安裝目錄
Operating system: x86_64-whatever-linux2
Configuring for linux-x86_64
Configuring for linux-x86_64
no-ec_nistp_64_gcc_128 [default] OPENSSL_NO_EC_NISTP_64_GCC_128 (skip dir)
no-gmp [default] OPENSSL_NO_GMP (skip dir)
no-jpake [experimental] OPENSSL_NO_JPAKE (skip dir)
no-krb5 [krb5-flavor not specified] OPENSSL_NO_KRB5
no-md2 [default] OPENSSL_NO_MD2 (skip dir)
no-rc5 [default] OPENSSL_NO_RC5 (skip dir)
no-rfc3779 [default] OPENSSL_NO_RFC3779 (skip dir)
no-sctp [default] OPENSSL_NO_SCTP (skip dir)
no-shared [default]
no-store [experimental] OPENSSL_NO_STORE (skip dir)
no-zlib [default]
no-zlib-dynamic [default]
IsMK1MF=0
CC =gcc
CFLAG =-DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
EX_LIBS =-ldl
CPUID_OBJ =x86_64cpuid.o
BN_ASM =x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o modexp512-x86_64.o
DES_ENC =des_enc.o fcrypt_b.o
AES_ENC =aes-x86_64.o vpaes-x86_64.o bsaes-x86_64.o aesni-x86_64.o aesni-sha1-x86_64.o
......
~/桌面/openssl-1.0.1g $ ./config -t
Operating system: x86_64-whatever-linux2
Configuring for linux-x86_64
/usr/bin/perl ./Configure linux-x86_64 -Wa,--noexecstack
~/桌面/openssl-1.0.1g $ make
#輸出一大堆信息,有可能提示沒有gcc編譯器(需安裝),或者提示權限不足(用sudo命令)
~/桌面/openssl-1.0.1g $ make install
#輸出一大堆信息,有可能提示提示權限不足(用sudo命令)
驗證是否成功安裝OpenSSL。
/usr/local $ ldd /usr/local/openssl/bin/openssl #添加環境變量
linux-vdso.so.1 => (0x00007fff0a3fe000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f620cdd6000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f620ca0e000)
/lib64/ld-linux-x86-64.so.2 (0x00007f620cff3000)
/usr/local $ openssl version #查看OpenSSL版本信息,并驗證是否安裝成功
OpenSSL 1.0.1e 11 Feb 2013
2.1.3 利用openssl的rsa算法進行加密解密
至此我們的OpenSSL在LinuxMINT上面安裝成功了,接下來我們進行簡單的rsa算法使用進行加密。
2.1.3.1 rsa算法簡要介紹:
RSA算法是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的公鑰非對稱加密算法,是目前最有影響力的公鑰加密算法。
RSA算法基于一個十分簡單的數論事實:將兩個大素數相乘十分容易,但那時想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。
RSA的算法涉及三個參數,n、e1、e2。
其中,n是兩個大質數p、q的積,n的二進制表示時所占用的位數,就是所謂的密鑰長度。
e1和e2是一對相關的值,e1可以任意取,但要求e1與(p-1)*(q-1)互質;再選擇e2,要求(e2*e1)mod((p-1)*(q-1))=1。
(n,e1),(n,e2)就是密鑰對。其中(n,e1)通ky"http://www.it165.net/qq/" target="_blank" class="keylink">qq5q9S/o6wobqOsZTKjqc6qy73Uv6GjWzFdPGJyIC8+UlNBvNO94sPctcTL47eozerIq8/gzayjrMnoQc6qw/fOxKOsQs6qw9zOxKOs1PKjukE9Ql5lMiBtb2QgbqO7Qj1BXmUxIG1vZCBuo7ujqLmr1L+808PczOXWxtbQo6zSu7Dj08O5q9S/vNPD3KOsy73Uv73iw9yjqTxiciAvPmUxus1lMr/J0tS7pbu7yrnTw6OsvLSjujxiciAvPkE9Ql5lMSBtb2QgbqO7Qj1BXmUyIG1vZCBuOzwvcD4KCjxwPjxzdHJvbmc+Mi4xLjMuMiDKudPDT3BlblNTTL340NBSU0G1xLzTw9y8sL3iw9w8L3N0cm9uZz48L3A+CgoKPHByZSBjbGFzcz0="brush:python;gutter:true;">#生成密鑰文件格式:openssl genrsa -out 密鑰文件 密鑰長度
~/桌面 $ openssl genrsa -out test.key 1024
Generating RSA private key, 1024 bit long modulus
........................................++++++
..................++++++
e is 65537 (0x10001)
~/桌面 $ cat test.key
-----BEGIN RSA PRIVATE KEY-----
MIICXwIBAAKBgQDt86MIs2GWuHhyAlMd9fRnBJorp/Buii6YjoldzMaPF5KIf5ub
YKHhnGyYWPVo74mnWKRPDCL0o/pRhthdlHHY/Vdg2YG8KbK9wXwf4I+zihsc4vRy
NgmJNbF1jGI4srRt8oqtBDtrsYZykLYcqtWWxL9bqjXdJO9PtipOssK7DwIDAQAB
AoGBANPyquqKFUfSIn6ysWRDeyHzyHtQSGm9rYl3lMW3K7mzLnNk7q60oRy7X0NI
IbgJfRxRaXF7hvtPwBy0Nq8MFWaReEcnxcPJt61TKTwvFrKlGeZnrG71ksgazZel
690FrN67R1rUfPO1HCJA58InBGstktSVo+BXhXCfcoae7jIJAkEA+IAd6KZUU+71
KgdXMVUHCEUG+MQ4tISCuVV5Xq2in46tVWN5xeyneJirIpOrNk0rldS6MOKPoDav
Gg/bkgaf7QJBAPUiBY7BUG2FVs/nMbJg4qaTORVge84Sr2kK9A3wfvcul3bzgQ8u
xhubxQx6wuOwJ3+ZjDT1chq7AO+6hbc7D2sCQQC+H19CqUcpdFCUWEtojfI0bIN5
/r6Xti5B19hlDJm4U7Pf+ZyoRniW9s8wRCShBgfLuZa+Ygia/luXp/xIy9K9AkEA
wTGuFaNvwtFa6QH6He7T0pqnW5yuFmyNiIkUbcQEHMXApAQnzBJ+GhY7R6mc3Zvg
lWUrpjVnV3/Yrhdf+Vf3vwJBAMO796q9Ne9YJvqTQMo9AjmQgD3kw9txhJe0BlQV
YX/Ffwo2FxFDdCAwNKWyKt3zEyXOmnxxvdzQb0MY2WSV7CE=
-----END RSA PRIVATE KEY-----
#密鑰文件生成公鑰文件
#格式:openssl rsa -in 密鑰文件 -pubout -out 公鑰文件
~/桌面 $ openssl rsa -in test.key -pubout -out TPub.key
writing RSA key
~/桌面 $ cat TPub.key
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDt86MIs2GWuHhyAlMd9fRnBJor
p/Buii6YjoldzMaPF5KIf5ubYKHhnGyYWPVo74mnWKRPDCL0o/pRhthdlHHY/Vdg
2YG8KbK9wXwf4I+zihsc4vRyNgmJNbF1jGI4srRt8oqtBDtrsYZykLYcqtWWxL9b
qjXdJO9PtipOssK7DwIDAQAB
-----END PUBLIC KEY-----
這里我們生成一個包含"this text will encrypt"的文本文件TText.en作為待加密文件,并使用rsa加密算法對其進行加密,然后在對加密文件進行解密。
~/桌面 $ echo "this text will encrypt" > TText.en
#加密格式:openssl rsautl -encrypt -in 待加密文件 -inkey 公鑰文件 -pubin -out 加密后文件
~/桌面 $ openssl rsautl -encrypt -in TText.en -inkey TPub.key -pubin -out TText.out
~/桌面 $ cat TText.out
????[}???Oa??
X YNw?D s??r??????rg?????j%??&% ??d?:?^}???????y~gW?{
#解密格式:openssl rsautl -decrypt -in 加密后文件 -inkey 私鑰文件 -out 解密后文件
~/桌面 $ openssl rsautl -decrypt -in TText.out -inkey test.key -out TText.de
~/桌面 $ cat TText.de
this text will encrypt
這里需要注意的是用OpenSSL的rsa算法生成的秘鑰文件就是本次解密使用的私鑰,而我們的公鑰是由該私鑰文件分解出來的(openssl rsa -in 密鑰文件 -pubout -out 公鑰文件),即私鑰內包含公鑰。
總結
以上是生活随笔為你收集整理的linux 安装jeakens_Chapter 2. OpenSSL的安装和配置学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 刚刚发布 网友就为理想L7吵翻了 因对电
- 下一篇: 人民日报评App自动续费套路:侵害消费者