openSSL: 3功能库组成:

   libcrypto:用来实现加密、解密的工具,一些需要用到加密解密工具的程序可能都要调用libcrypto库,openssl在装完Linux时都会自动装上去;就是因为它里面的加密解密库为众多程序所依赖;

   libssl:实现ssl功能的,要想实现https协议,那么https会话的那部分功能,通常都要调用libssl来完成;大多数要用到ssl的程序都要调用libssl库来完成ssl会话,

   httpd这个程序软件中有个模块mod_ssl,是基于libssl编程所实现的,能够让


# openssl version 查看openssl的版本号,

  Standard commands :标准命令

  Message Digest commands:信息摘要的命令: dgst:调用加密算法;

  Cipher commands:主要用于加密解密档案的命令

加密

格式:# openssl enc -des3 -in/path/to/somefile -e -out /path/to/somefile.des3

例如:加密一个文件;

在当前目录下加密fstab文件,

#openssl  enc  –des3  –infstab  –e   : -des3说明是使用des3加密的;-in 指定文件;-e 表示加密,可以不写,默认也是加密  enc就是加密

213250352.png

如果想保存:#openssl enc –des3 –in fstab –e --out fstab.des3   -out:保存

213357816.png

解密:使用–d

格式:# openssl enc-des3 -in /path/to/somefile.des3 -d -out /path/to/somefile

例:先删除fstab文件:#rm fstab

然后在解密:# openssl enc des3 –d infstab.des3 –out fstab 使用-out保存文件

213448606.png

获取特征码:使用 # openssl dgst –md5 fstab

213556732.png

使用–hex 表示使用十六进制编码:可以不使用,默认就是十六进制编码;

213631383.png

信息文件的雪崩效应:

例:编辑文件fstab:在前面第一行加个#

213711309.png

格式:# openssl dgst -md5 -hex /path/to/somefile

213759423.png

同样也可以使用 # med5sum fstab :无论使用哪种计算工具,只要算法相同获得特征码都相同;

213841598.png

算法还有sha1

213926526.png

# openssl dgst -md5-hex /path/to/somefile

测试当前主机所支持的加密算法的速度:speed

214018874.png

#openssl speed 后不带测试条件,他会对所有的测试方式进行测试;

Passwd

# man sslpasswd  查看帮助

生成随机数:

格式# openssl rand -base64 num

   # openssl rand -hex num

使用方式:# openssl passwd -1 –salt  -1表示使用md5算法

214108761.png

Rand :是openssl生成随机数的命令

查看rand:  # man sslrand

使用格式:# opensslrand –base64 4 4表示随机生成4位数字; -base64

表示生成方式;

214154353.png

#openssl rand –hex 4

214342169.png

salt生成随机数:# openssl passwd -1 -salt 'openssl rand -hex4'

214438918.png

Genrsa:

生成私钥:

格式:# openssl genrsa 2^n > /path/to/keyfile

     #openssl genrsa -out /path/to/keyfile 2^n

# (umask 077; openssl genrsa -out/root/mykey2.pri 2048)

Openssl另种算法:genrsa :这是一种非对称加密算法

# openssl genrsa:生成一个rsa格式的私钥

还可以指定生成多少位的私钥:# openssl genrsa 后跟数字

214520397.png

如果不给位数,默认为512位;

214606747.png

生成的私钥也可以保存起来:

例:保存到mykey.pri

214744344.png

图中的………++表示生成的等待时间。

查看 mykey.pri 可以得到这个私钥

214835860.png

Genrsa也可以使用加密算法:

214912598.png

这个结果是加密后的结果;

而生成的私钥别的用户也有查看权限,所以要改期权限;改成400600;也可以直接在生成时定义好它mask # umask 077; openssl genrsa –out /root/mykey2.pri 2048

214955539.png

查看他的权限

215035272.png

# (umask077;openssl genrsa -out /root/mykey2.pri 2048) 注:使用umask时加括号意味着他是在一个子shell中执行,执行完了这个命令就退出了,所以只会对本次的文件权限改为600,如果不使用括号,则以后创建的文件权限将会都是600

Pubout :提取公钥

提取公钥:# openssl rsa –in mykey.pri –pubout

215123941.png

申请一个证书,要先去提交一个申请,提交的

数字证书:x.509v3

一个证书的组成部分由

       版本号(version)

       序列号():证书本身在CA中惟一标识;

       签名算法标志

       发行者名称

       有效期:

       证书主体名称:(组织(主机),个人)

       证书主体公钥信息:

       发行商惟一标志

       证书主体的惟一标志

       扩展:

       签名:

除了签名剩下的部分都是自己来生成的,只不过CA给签名后,他在前签名同时会把发行者名称以及发行者的标志附加在证书里面,多以整个证书的初始部分需要申请者自己去生成,

所以我们要去申请一个签名证书,得自己生成一个证书签署申请,

如何申请证书:

如何申请证书:

      1、生成一个私钥;

      2、根据这个私钥从把公钥提取出来,并附加傻瓜自己的个人信息制作成一个证书签署请求吧自己的个人信息个人请求方剂去,然后通过网络或其他方式提交给CACA验证了信息和公钥,

      # openssl req -new -key/path/to/private_key -out /paht/to/certificate.csr

      3、由CA负责签署证书

如何制作签署请求:

req :证书签署请求,证书生成; 既能生成申请,又能生成证书;

查看req功能:# man req

req功能:

  -key 指定私钥在什么地方,指定从哪读取私钥文件,这个命令会自动去提取公钥,

  -new:要实现制作一个证书申请得使用-new 并使用-key告诉他私钥在什么地方,如何去提取公钥;

  -days:明确说明申请的证书的有效使用期限,

# openssl req -new-key /root/mykey.pri -out /root/myreq.csr

-new 表示要制作一个证书申请,-key指定是要在什么地方,-out 表示把证书申请保存为什么文件,myre.csr : csr表示证书签署请求,一般都有这个后缀名来作为证书申请文件的后缀名,

215207675.png

State or ProvinceName (full name) []: 填写州或省份的全名,这里不能简写,

Locality Name (eg,city) [Default City]: 默认所在的城市,

Organization Name(eg, company) [Default Company Ltd]: []: 公司名称,

OrganizationalUnit Name (eg, section) []: 所在部门的名称;

Common Name (eg,your name or your server's hostname) []: 要包含证书拥有者的名称,如果将来放到服务器上别人用来作为这个站点来访问,假如为httsp这个应用来提供服务的话,这里必须是你的用户在浏览器中输入访问网站时使用的名称;如果使用域名来访问,这里给的是域名,如果是IP地址,这里必须是IP地址,这里一定要保持一致,

Email Address []: 管理远的邮箱地址,这里可以省略不写

A challengepassword []: 加密保存,如果不想加密直接回车

证书生成保存在myreq.csr 文件中

215249425.png

证书生成成功,然后把证书文件复制给CACA验证身份,签署后就能使用


自建CA

cd/etc/pki/tls目录下

215338836.png

编辑 # vim /etc/pki/tls/openssl.cnf

其中有许多中括号分割的许多段,每一段只对openssl的单独的子命令生效或只对某些功能生效

215428892.png

其中ca:要想某个功能扮演ca时它有哪些配置,他将去读取[CA_default]中的配置信息;指定dir,默认情况下要把openssl制作成自建CA的话他的工作目录在什么地方,在 /etc/pki/CA ;

certs : 对于CA来讲,可能有会签署很多证书,一个证书应该有证书存储位置,这里就是指定证书存取库在什么地方;在/etc/pki/dir/certs;

crl_dir : 证书撤销列表所在的目录,

database每签一个证书,都会把证书的相关信息记录下来制作成一个缩影叫做database;这是个文本文件

new_serts_dir: 新签证书的位置

095316809.png

certificateCA自己的证书; CA自己有证,才能够给用自己的公钥去签署证书,而且让客户可以拿来用自己的证书来验证是不是CA发的

serial已经发过多少证书

crlnumber当前处于已经吊销的有几个了,

crl:当前的crl是什么,当前的crl证书吊销列表文件时什么,

private_key证书颁发机构自己的私钥文件

创建CA

1、开始自建CA;切换到/etc/pki/CA 目录下,

然后需要在private下为CA生成一个私钥文件:

   # umask 077; openssl genrsa –outprivate/cakey.pem 2048

095415421.png

2、生成自签证书:

# openssl req –new–new –x509 –key private/cakey.pem –out cacert.pem –day 3656

-X509 指定证书格式,说明要完成自签了,不加-509 就是制作申请;

-key :指定密钥文件;  -days:指定有效期限

095454346.png

095527736.png

这里CA的自签有了,私钥也有了,各自工作目录:newcertscrlserts…..

现在却一个序列号文件serial和一个数据库文件index.txt,并且高数它序列号从01开始

095606607.png

然后可以给刚申请的文件myreq.crs签证了:

  # openssl ca –inmyreq.crs –out mycert.crt –days 3656

  ca :说明当前就以ca模式来工作,-in表示从那个文件读进来;证书文件通常都以.crt结尾;

3、签署:

给别人发过来的申请签证:

#openssl ca -in /path/to/certreq.csr -out /path/to/certfile.crt -days 3656

095658959.png

095730265.png

095805948.png

如果要制作多个请求的话,在同一个主机上,同样的信息要填很多遍,如果不想填都可以使用默认值:可以编辑tls下的openssl文件

095844876.png

默认为xx改成CN

095937664.png

100836237.png

由此就能完成一个自建CA及制作证书签署的过程