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的安装和配置学习笔记相关推荐

  1. 虚拟机安装docker_Docker 从入门到放弃:新手学习笔记(上)

    前言: 本文记录的是作为一个新手,从了解 Docker 是什么.Docker 技术包含哪些概念到上手使用.安装以及发布 Docker 镜像的整个过程.作者在学习过程中参阅了诸多文档和教程,在此一并感谢 ...

  2. 鸟哥的Linux私房菜(基础班)第八章学习笔记

    第八章 Linux磁盘与文件系统管理 学习笔记 认识EXT2文件系统 硬盘物理组成 分区 文件系统 Linux的EXT2文件系统(inode) EXT2/EXT3文件的访问与日志文件系统的功能 Lin ...

  3. 鸟叔的linux私房菜:第0章 计算机概论学习笔记(Learning Notes for Basic Computer Theory)

    本博客是针对<鸟叔的Linux私房菜 基础学习篇 第四版>的第0章 计算机概论的学习笔记. 1 电脑辅助人脑的好工具 11 计算机硬件的五大单元 12 一切设计的起点CPU的架构 其它单元 ...

  4. linux编程 —— shell编程脚本常用语法总结 【学习笔记】

    文档声明: 以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正.并且该文档在后期会随着学习的深入不断补充完善.感谢各位的参考查看. 笔记资料仅供学习交流使用,转载请标明出处 ...

  5. 上海lin上海linux培训ux,lin教材ux字符驱动设备-学习笔记(最新实例).pdf

    - 1 - 字符驱动开发学习笔记 Linux下的设备驱动程序被组织为一组完成不同任务的函数的集合,通过 这些函数使得Windows 的设备操作犹如文件一般.在应用程序看来,硬件设备只 是一个设备文件, ...

  6. docker安装redis提示没有日记写入权限_Docker 学习笔记(第六集:使用 Dockerfile 定制镜像)...

    ethan 读完需要 11分钟 速读仅需 4 分钟 / 使用 Dockerfile 定制镜像 / 什么是 Dockerfile 呢? Dockerfile 是一个文本文档,其中包含用户可以在命令行上调 ...

  7. Proxmox VE2.2虚拟化安装配置学习笔记(三)

    你同时也可以上传ISO镜像创建KVM的客户机: 想要删除一个Template或者是ISO文件的话,先选定想要删除的文件,再点击上方的"删除"按钮: 5创建OpenVZ容器 创建Op ...

  8. MySQL概述 -- 安装配置 -- 学习笔记

    前言 在我们讲解SpringBootWeb基础知识(请求响应案例)的时候,我们讲到在web开发中,为了应用程序职责单一,方便维护,我们一般将web应用程序分为三层,即:Controller.Servi ...

  9. SQL Server CE服务器端和客户端安装配置学习笔记

    SQL Server 2005 CE开发环境介绍: 最近学习使用SQL Server 2005 Compact Edition进行数据存储,在学习的过程中发现,使用SQL Server2005 man ...

最新文章

  1. Nat. Commun. | 多层生物分子网络的鲁棒性研究
  2. Linux/Unix the definition of cpu-nice
  3. 为什么在大型 Angular 应用里我们需要使用 ngrx
  4. js(Dom+Bom)第七天(1)
  5. Google Closure Complier的使用
  6. 计算机网络管理SIMP,计算机网络管理实验报告.docx
  7. 程序员需要知道的8个Linux命令
  8. python os函数_python os模块主要函数
  9. PyCharm设置背景颜色
  10. python的this_python中的this——self | 学步园
  11. cookie and session
  12. Linux应急响应篇
  13. DS18B20温度传感器
  14. 数据仓库:金融/银行业的分层架构篇
  15. android反编译打包出错,APK打包错误,能解决的给红包!
  16. 《高效人士的七个习惯》读后感-总结
  17. 低电平译码器LS138设计
  18. Vue+iView身份证、统一社会信用编码校验
  19. SoftWare Engineering -- WEEK.3
  20. 手把手教你下载在线地图?!再也不用下了

热门文章

  1. osg下物体绕自身轴旋转
  2. Android开发之在Fragment和Activity页面拍照需要注意的地方
  3. 通过adb命令查看当前activity(更新版)
  4. 使用ab进行压力测试详解
  5. XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较
  6. java 兼容excel_Java解析Excel工具类(兼容xls和xlsx)
  7. Android ORM 框架:GreenDao 数据库升级
  8. gpg加解密软件学习
  9. 前端 html结合css-1篇
  10. 【实验】给指定的并且已登陆系统的用户发信息