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 公钥文件),即私钥内包含公钥。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值