十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
Openssl是Linux下的基础安全工具
专注于为中小企业提供成都网站建设、网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业沭阳免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。先简要介绍一些基础知识:
Openssl功能主要有:对称加密(DES、3DES、AES等),非对称加密(RSA),散列(MD5、SHA1等)以及证书的相关操作(创建、申请、颁发、吊销等)
PKI体系成为公钥加密体系,组成部分包括:认证中心、注册中心、证书库、证书废止列表。
Openssl常用证书格式:X509、PKCS7、PKCS12。
证书文件常用存储格式:PEM(BASE64)、PFX或P12(二进制)
本文主要实践点:
1、根CA相关操作(私钥生成、生成自认证证书)
2、用户证书相关操作(私钥生成、生成证书签发请求文件、根CA同意请求签发该证书)
3、次级CA证书相关操作(从根CA得到次级CA证书和次级CA私钥之后,再给下属用户签发证书)
实验环境:
RHEL 6.3(KVM虚拟机) rootca.testlibq.com
RHEL 6.3(KVM虚拟机) apache.testlibq.com(以APACHE服务器为次级CA)
Windows XP(KVM虚拟机) xp.testlibq.com(以展示证书)
实验步骤:
1、生成根CA证书
登录到ROOTCA机器
cd /etc/pki/CA/private
openssl genrsa -des3 -out rootca.key 1024
#生成ROOTCA私钥,rootca.key格式为PEM
[设置rootca私钥密码,例如输入rootca]
touch /etc/pki/CA/index.txt #创建证书数据库文件
echo "01" > /etc/pki/CA/serial #创建证书序号文件
openssl req -new -x509 -key rootca.key -out /etc/pki/CA/rootca.crt
#生成ROOTCA证书(类型为X509),rootca.crt格式为PEM
[输入rootca私钥密码:rootca]
[填入一堆证书信息]
由于/etc/pki/tls/openssl.cnf中设置了CA的私钥和证书路径,所以这里使用软链接。
ln -s /etc/pki/CA/private/rootca.key /etc/pki/CA/private/cakey.pem
ln -s /etc/pki/CA/rootca.crt /etc/pki/CA/cacert.pem
这样,CA便设置好了。
查看证书和私钥可以用以下命令:
openssl rsa -in /etc/pki/CA/private/rootca.key -text -noout
openssl x509 -in /etc/pki/CA/rootca.crt -text -noout
2、用户证书的相关操作
PS:
用户证书可以在用户端生成私钥和请求文件,然后传递至CA,由CA签发后,发给用户。
也可以由根CA生成用户私钥和请求文件,然后签发后把私钥和证书发给用户。
这里演示后者。
登录到rootca机器(接实验1)
cd /etc/pki/CA/private
openssl genrsa -des3 -out a.key 1024 #生成用户私钥
[set password of a.key]
openssl req -new -key a.key -out a.csr #生成用户请求文件
[input password of a.key]
[输入一堆证书信息]
openssl ca -in a.csr
[y,y]
生成证书位于/etc/pki/CA/newcerts/01.pem
PS:
该证书类型为X509,若需要PKCS12类型证书,请使用
openssl pkcs12 -export -in /etc/pki/CA/newcerts/01.pem -inkey /etc/pki/CA/private/a.key -out a.pfx[输入私钥密码][设置传输密码]
3、生成证书链
此节内容网上文章较少,我研究了好久才搞出来。
首先上面两个实验是连着做的,第三个实验请把上面的环境清除。
登录到ROOTCA
cd /etc/pki/CA/private
touch ../index.txt
echo "01" > ../serial
openssl genrsa -des3 -out rootca.key 1024 [rootca]
ln -s rootca.key cakey.pem
openssl req -new -x509 -key rootca.key -out /etc/pki/CA/rootca.crt -extensions v3_ca
ln -s /etc/pki/CA/rootca.crt /etc/pki/CA/cacert.pem
这里查看一下rootca证书:
openssl x509 -in /etc/pki/CA/rootca.crt -text -noout
确定extensions中,有basicConstraint CA:TRUE,那么代表正确。
PS:basicConstraint称为基础约束,若有CA:TRUE,证明该证书具有CA效力。(所以上述实验1、2中并不严谨,这点在需要证书链的场合尤为重要)
cd /etc/pki/CA/private
openssl genrsa -des3 -out apache.key 1024 [apache]
openssl req -new -key /etc/pki/CA/private/apache.key -out apache.csr
[apache][一堆证书信息]
openssl ca -in apache.csr -extensions v3_ca[y,y]
PS:这个extensions至关重要,关系到apache这个证书有没有资格再颁发证书给用户。
登录到apache主机
rsync rootca.testlibq.com:/etc/pki/CA/private/apache.key /etc/pki/CA/private/apache.key
[root password of rootca.testlibq.com]
rsync rootca.testlibq.com:/etc/pki/CA/newcerts/01.pem /etc/pki/CA/apache.crt
[root password of rootca.testlibq.com]
ln -s /etc/pki/CA/private/apache.key /etc/pki/CA/private/cakey.pem
ln -s /etc/pki/CA/apache.crt /etc/pki/CA/cacert.pem
下面制作用户证书
cd /etc/pki/CA
touch index.txt
echo "01" > serial
openssl genrsa -des3 -out private/user1.key 1024 [user1]
openssl req -new -key private/user1.key -out private/user1.csr[user1][一堆证书信息]
openssl ca -in private/user1.csr -extensions usr_cert[y,y]
PS:这里-extensions usr_cert不必要。
制作证书链
rsync rootca.testlibq.com:/etc/pki/CA/rootca.crt /etc/pki/CA/certs/rootca.crt
[root password of rootca.testlibq.com]
将rootca的证书和apache的证书整合到一个文件
cd /etc/pki/CA/certs
cp /etc/pki/CA/apache.crt chain.pem
cat rootca.crt >> chain.pem
验证证书链
openssl verify -CAfile /etc/pki/CA/certs/chain.crt /etc/pki/CA/newcerts/01.pem
(若显示Verify OK,表示验证证书链成功)
转换用户证书为PKCS12
openssl pkcs12 -export -in /etc/pki/CA/newcerts/01.pem -inkey /etc/pki/CA/private/user1.key -out /etc/pki/CA/private/user1.pfx -chain -CAfile /etc/pki/CA/certs/chain.crt
最后将user1.pfx复制到Windows中,导入证书,便于展示。
结果如图:
附件:http://down.51cto.com/data/2362193另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。