OpenSSL加密证书
用于建立安全站点的工具,颁发证书,例如https,ftps等
默认配置文件:
[root@bogon CA]# cat /etc/pki/tls/openssl.cnf
[ CA_default ]
dir = /etc/pki/CA #CA默认工作目录
certs = $dir/certs #CA签发证书的位置
crl_dir = $dir/crl #CA吊销证书的位置
database = $dir/index.txt #CA颁发证书的索引,相当于目录
new_certs_dir = $dir/newcerts #新生成证书的保存路径
certificate = $dir/cacert.pem #CA的自签证书
serial = $dir/serial #CA签署的序列号
crlnumber = $dir/crlnumber #CA吊销的序列号
crl = $dir/crl.pem #当前吊销证书的文件
private_key = $dir/private/cakey.pem#CA自己的私钥文件
建立私有CA,并进行自我签署
1.首先将配置文件中需要的文件及文件夹建立出来
[root@bogon CA]# mkdir certs crl newcerts private
[root@bogon CA]# touch index.txt serial crlnumber
[root@bogon CA]# ls
certs crl crlnumber index.txt newcerts serial
2.给CA签署的序列号文件一个开始编号(只需要第一次给)
[root@bogon CA]# echo 01 > serial
[root@bogon CA]# cat serial
01
3.生成CA私钥,存放位置对应配置文件,并将权限设置为600
[root@bogon CA]# openssl genrsa -out private/cakey.pem 2048
Generating RSA private key, 2048 bit long modulus
...................+++
...................+++
e is 65537 (0x10001)
[root@bogon CA]# chmod 600 private/cakey.pem
[root@bogon CA]# ls -l private/cakey.pem
-rw-------. 1 root root 1679 Jun 4 04:50 private/cakey.pem
4.生成CA自签证书
req:发起签署请求,当对应x509时表示自发自签。
-new:新建证书
-x509:专用于自签CA证书,为别人签署不需要使用
-key:对应的私钥文件
-out:生成文件,与配置文件对应
-days:有效期
[root@bogon CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 36500
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN #国家
State or Province Name (full name) []:beijing #省
Locality Name (eg, city) [Default City]:beijing #城市
Organization Name (eg, company) [Default Company Ltd]:abc #公司
Organizational Unit Name (eg, section) []:01 #部门
Common Name (eg, your name or your server's hostname) []:www.abc.com #服务器主机名
Email Address []:1@abc.com #管理员邮箱
为其他人颁发证书
1.在需要证书的服务器上创建秘钥文件,为了安全起见将权限改为600,这里用的httpd举例,并且这里的ssl目录是自己创建的
[root@bogon CA]# openssl genrsa -out /etc/httpd/ssl/httpd.key 2048
Generating RSA private key, 2048 bit long modulus
...................................................................+++
.......+++
e is 65537 (0x10001)
[root@bogon CA]# chmod 600 /etc/httpd/ssl/httpd.key
[root@bogon CA]# ls -l /etc/httpd/ssl/httpd.key
-rw-------. 1 root root 1679 Jun 4 17:07 /etc/httpd/ssl/httpd.key
2.生成证书签署请求,csr代表请求文件
[root@bogon CA]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 165
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:beijing
Locality Name (eg, city) [Default City]:beijing
Organization Name (eg, company) [Default Company Ltd]:abc
Organizational Unit Name (eg, section) []:abc
Common Name (eg, your name or your server's hostname) []:www.abc.com
Email Address []:1@q.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: #添加密码
An optional company name []: #重复密码
3.将签署请求文件发送给CA
[root@bogon CA]# scp /etc/httpd/ssl/httpd.csr root@172.17.148.113:/tmp
httpd.csr 100% 1033 1.0KB/s 00:00
[root@bogon CA]#
4.在CA端签署收到的请求
ca:签署
crt:证书文件
days:签署有效期
[root@bogon CA]# openssl ca -in /tmp/httpd.csr -out certs/httpd.crt -days 365
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 1 (0x1)
Validity
Not Before: Jun 4 09:17:01 2018 GMT
Not After : Jun 4 09:17:01 2019 GMT
Subject:
countryName = CN
stateOrProvinceName = beijing
organizationName = abc
organizationalUnitName = abc\08\08
commonName = www.abc.com
emailAddress = 1@q.com
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
7E:7C:E1:B2:10:17:32:D5:A5:1A:FC:E4:C2:DC:E0:48:36:67:A9:BF
X509v3 Authority Key Identifier:
keyid:C6:AA:7E:FE:18:6D:85:9E:B4:61:AE:4C:D3:1D:EB:61:3B:3C:36:C7
Certificate is to be certified until Jun 4 09:17:01 2019 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
5.将签署完成的证书发送给客户端
[root@bogon CA]# scp certs/httpd.crt root@172.17.148.255:/etc/httpd/ssl/
6.查看签署证书的信息等
[root@bogon CA]# cat index.txt #查看这个目录文件
V 190604091701Z 01 unknown /C=CN/ST=beijing/O=abc/OU=abc\x08\x08/CN=www.abc.com/emailAddress=1@q.com
#v表示已签署 R已吊销
[root@bogon CA]# openssl x509 -in certs/httpd.crt -noout [ -text | -serial | -subject ]
text,显示全部
serial显示序号
subject显示标题
7.为了安全起见将,csr文件删除
[root@bogon CA]# rm -rf /tmp/httpd.csr #CA端
[root@aaa CA]# rm -rf /etc/httpd/ssl/httpd.csr #请求端
吊销证书
1.获取要吊销的证书的序列号及主题信息,一般在客户端做
[root@bogon CA]# openssl x509 -in certs/httpd.crt -noout -serial -subject
serial=01
subject= /C=CN/ST=beijing/O=abc/OU=abc\x08\x08/CN=www.abc.com/emailAddress=1@q.com
2.根据客户端的serial和subject信息对比是否与CA端index.txt文件中的信息是否一致
[root@bogon CA]# cat index.txt
V 190604091701Z 01 unknown /C=CN/ST=beijing/O=abc/OU=abc\x08\x08/CN=www.abc.com/emailAddress=1@q.com
3.如果一致,则吊销
[root@bogon CA]# openssl ca -revoke newcerts/01.pem #在新生成证书目录下有相对应序号的证书文件
Using configuration from /etc/pki/tls/openssl.cnf
Revoking Certificate 01.
Data Base Updated
4.生成吊销证书编号(只有在第一次吊销的时候使用)
[root@bogon CA]# echo 01 > crlnumber
[root@bogon CA]# cat crlnumber
01
5.跟新证书吊销列表,随便写一个文件
[root@bogon CA]# openssl ca -gencrl -out diaoxiao.crl
6.查看吊销列表
[root@bogon CA]# openssl crl -in diaoxiao.crl -noout -text
OpenSSL加密证书的更多相关文章
- windows下OpenSSL加密证书安装步骤与使用方法
OpenSSL加密证书一般用于签名认证,含私钥和公钥.在Linux系统中,OpenSSL一般是已经安装好了,可以直接使用.而在Windows系统中,是需要安装使用的. 最近在使用支付平台时,用到了Op ...
- Security基础(三):OpenSSL及证书服务、邮件TLS/SSL加密通信
一.OpenSSL及证书服务 目标: 本案例要求熟悉OpenSSL工具的基本使用,完成以下任务操作: 使用OpenSSL加密/解密文件 搭建企业自有的CA服务器,为颁发数字证书提供基础环境 方案: 使 ...
- PHP的openssl加密扩展使用小结
h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h ...
- CentOS6系统openssl生成证书和自签证书
CentOS6系统openssl生成证书和自签证书的过程,记录一下,本文基于CentOS 6 64bit.$ yum install openssl openssl-devel 1,生成服务器端的私钥 ...
- <Apache服务的搭建"三件套"《目录验证》《虚拟主机》《加密证书》>
自己没事会整理一些小知识,复习原来的同时也帮助新手. vvvvvvvvvvvvv开启apache目录验证vvvvvvvvvvvvvv htpasswd -cm uers redhat //redha ...
- 使用OpenSSL生成证书
使用OpenSSL生成证书 下载安装openssl,进入/bin/下面,执行命令(把ssl目录下的openssl.cnf 拷贝到bin目录下)1.首先要生成服务器端的私钥(key文件):openssl ...
- 利用openssl管理证书及SSL编程第1部分: openssl证书管理
利用openssl管理证书及SSL编程第1部分 参考:1) 利用openssl创建一个简单的CAhttp://www.cppblog.com/flyonok/archive/2010/10/30/13 ...
- PHP的openssl加密
PHP的openssl扩展 openssl扩展使用openssl加密扩展包,封装了多个用于加密解密相关的PHP函数,极大地方便了对数据的加密解密. 常用的函数有: 对称加密相关: string ope ...
- openssl建立证书,非常详细配置ssl+apache
原文链接:http://blog.51yip.com/apachenginx/958.html openssl建立证书,非常详细配置ssl+apache 张映 发表于 2010-08-07 分类目录: ...
随机推荐
- java不要登录发送邮件noReply
最近在工作中遇到一个问题: 客户需要让我们的系统给他们发邮件,但是不给我们提供用户密码. 这样就导致一个问题,即,一般我们使用的都是smtp方式发邮件,发邮件的时候必须登录,虽然可以修改发件人的邮箱名 ...
- idea-plugin-easycode
1.背景 在练习使用mybatis-generator时候,无意间看到博文esaycode(代码神器),https://www.jianshu.com/p/e4192d7c6844,试验完,感觉这个工 ...
- 动态弹出框,iframe的name包含一串随机数
由于name是随机的,要定位name比较困难,此处由于iframe的标签是唯一的,所以可以用tag_name定位 framename=driver.find_element_by_tag_name(& ...
- 批量处理文件的Python程序
经常批量处理文件,这里有个python的模板,保存一下 这个例子是把目录里面所有子目录的mp3文件放慢0.85倍并保存到./processed/目录下面. #coding=utf-8 import s ...
- 洛谷 三月月赛 A
模拟模拟 #include<bits/stdc++.h> using namespace std; inline int ra() { ,f=; char ch=getchar(); ; ...
- 12.swoole学习笔记--锁机制
<?php //创建锁对象 $lock=new swoole_lock(SWOOLE_MUTEX);//互斥锁 echo "创建互斥锁\n"; //开始锁定 主进程 $loc ...
- Java IO流学习总结(转)
原文地址:http://www.cnblogs.com/oubo/archive/2012/01/06/2394638.html Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 ...
- 数论 CF27E Number With The Given Amount Of Divisors
求因子数一定的最小数(反素数) #include<iostream> #include<string> #include<cmath> #include<cs ...
- 吴裕雄--天生自然C++语言学习笔记:C++ 循环
有的时候,可能需要多次执行同一块代码.一般情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推. 编程语言提供了允许更为复杂的执行路径的多种控制结构. 循环语句允许我们多次执 ...
- case...when...和decode——oracle
1.decode函数: 用法:decode(条件,值1,翻译1,值2,翻译2,......,缺省值): 例子: ','失败','未知') from table t1;--改变字段的显示值 ,变量1,变 ...