资源预览内容
第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
亲,该文档总共7页全部预览完了,如果喜欢就下载吧!
资源描述
openssl 生成证书及吊销列表一,先来讲讲基本概念。证书分类:按类型可以分为 CA 证书和用户用户证书,我们我说的 root 也是特殊的 CA 证书。用户证书又可以根据用途分类,放在服务器端的称为服务器证书,放在客户端一般称为客户端证书(这种说法不是很准确,只是一种理解。实际应该是在对客户端认证时才会用到客户端证书且 root、ca 证书都可以放在客户端),记住,这两种证书都应为用户证书。一般可以理解为证书由 key 和证书(没有 key 的文件也称为证书)组成,谁拥有这两个东西才真正拥有这个证书。好比锁是有钥匙和锁头组成的,你得两都有。你只有锁头锁住东西,却没有钥匙打开,也没什么用。如果你对证书不了解,那一定要知道证书这三点作用(纯个人认为比较重要三点):1,签名:通过签名技术可以保证证书拥有者的唯一性,而且所有信息没有被篡改。想了解数字签名的自己百度一下。2,提供公钥:通过签名技术知道证书拥有者是 A,且所有信息都是 A,就可以拿到 A 的公钥算法及公钥。所以有些人理解为证书就是一个公钥(个人认为这种理解与实际偏差较大)。3,颁发者:找到颁发者很重要,每个证书都有一个颁发者。这个在证书认证时用得到。对于用户(人)来说还是通过证书名称来区分证书,下面讲解几种常见的证书。a).cert 或.crt 文件:这种证书倒是可以理解为公钥证书,因为它最主要的作用就是来提供公钥的,只是一种理解,签名认证这些作用一样不会少。这种文件不含有 key,就好像一个打开的锁头,可以发给任何人。所以拥有.cer 或.crt 文件的不是真正的拥有者,因为你可以用证书里的公钥加密,但并没有私钥解密。b).pfx 文件:这种证书文件可以理解为.cer 文件与 key 结合体,即拥有.pfx 证书相当同时拥有公钥与私钥。即可以加密也可以解密。c).key 文件:就是钥匙啦。锁头可以给任何人,但是钥匙只能自己保留,所以这玩意一定要保存好。d).p7b 文件:为证书链文件,也不含私钥。证书链即证书的拥有者、颁发者、颁发者的颁发者、依次类推的证书合成一个文件。以上对证书概念基础的了解,有基础的可以不用看。实际证书分类根据编码方式来区分的,只是为了方便理解才这么分的。当我们需要向对方发送加密数据时,我们只需要对方的 cer 或 crt 文件就可以了。而需要对方向自己发送加密数据时,自己得拥有 key,并且对方要有自己公钥(从 cer 文件获得)。二、环境搭建安装 openssl 这个就不讲了,现在很多 linux 版本都默认安装了。先来看下配置文件中一段。默认配置文件/usr/local/openssl/ssl/openssl.cnf 或者/etc/pki/tls/openssl.cnf。dir = ./demoCA # Where everything is keptcerts = $dir/certs # Where the issued certs are keptcrl_dir = $dir/crl # Where the issued crl are keptdatabase = $dir/index.txt # database index file.#unique_subject = no # Set to no to allowcreation of#several ctificates with same subject.new_certs_dir = $dir/newcerts # default place for new certs.certificate = $dir/cacert.pem # The CA certificateserial = $dir/serial # The current serial numbercrlnumber = $dir/crlnumber # the current crl number# mustbe commented out to leave a V1 CRLcrl = $dir/crl.pem # The current CRLprivate_key = $dir/private/cakey.pem# The private keyRANDFILE = $dir/private/.rand # private random number file根据上面配置文件就知道,我们得搭建相同的目录结构环境。先创建一个目录 test,并且将 1, 配置文件 cp 到 test 目录下。iyunvlocalhost # mkdir testiyunvlocalhost # cd testiyunvlocalhost test# cp/usr/local/openssl/ssl/openssl.cnf ./iyunvlocalhost test# lsopenssl.cnf2, 根据配置文件中目录结构可知有个 demoCA 目录,目录下有各种文件。iyunvlocalhost test# mkdir ./demoCA./demoCA/newcerts ./demoCA/privateiyunvlocalhost test# chmod 777./demoCA/privateiyunvlocalhost test# echo01./demoCA/serialiyunvlocalhost test# touch./demoCA/index.txt生成证书暂时用到这么多,其他可以先不创建,用到时再作修改。环境目录结构如下:iyunvlocalhost test# tree. demoCA certs index.txt private newcerts openssl.cnf3, 环境搭建很重要的东西就修改配置文件了。这里只是实现生成证书,不讲解配置文件。所以只需要修改如下一句就可以了。dir = ./demoCA # Where everything is kept将路径改为实际绝对路径。我这里就是/root/test/demoCA,所以修改后就是:dir = /root/test/demoCA # Whereeverything is kept三、整体步骤openssl genrsa -des3 out server.key 1024/生成 keyopenssl req -new key server.key -outserver.csr -config openssl.cnf/生成 csr 文件openssl req -new -x509 -keyoutca.key -outca.crt -config openssl.cnf/自生成 CA(root)openssl ca -in server.csr out server.crt-cert ca.crt -keyfile ca.key -config openssl.cnf/签名penssl pkcs12 -export -inkeyserver.key -inserver.crt -out server.pfx/合成 pfx 格式四、具体生成证书步骤将以生成服务器端证书为例讲解1,生成私钥文件,保存为 server.key。使用的 3des 算法,密钥长度为 2048。iyunvlocalhost test# openssl genrsa -des3-out server.key 2048Generating RSA private key, 2048 bit longmodulus.+.+e is 65537 (0x10001)Enter pass phrase for server.key: #输入秘密Verifying - Enter pass phrase forserver.key: #输入秘密iyunvlocalhost test# lsdemoCA openssl.cnf server.key2,生成证书签名申请文件(csr)。保存为 server.csriyunvlocalhost test# openssl req -new-key server.key -out server.csr -config openssl.cnfEnter pass phrase for server.key: #输入第 1 步输入的密码You are about to be asked to enterinformation that will be incorporatedinto your certificate request.What you are about to enter is what iscalled a Distinguished Name or a DN.There are quite a few fields but you canleave some blankFor some fields there will be a defaultvalue,If you enter ., the field will be leftblank.-Country Name (2 letter code) AU:cnState or Province Name (full name)Some-State:bjLocality Name (eg, city) :hdOrganization Name (eg, company) InternetWidgits Pty Ltd:www.test.comOrganizational Unit Name (eg, section):testCommon Name (e.g. server FQDN or YOUR name):www.test.comEmail Address :testtest.comPlease enter the following extraattributesto be sent with your certificate requestA challenge password : #这里可以不输入An optional company name : #这里可以不输入iyunvlocalhost test# lsdemoCA openssl.cnf server.csr server.key3,有申请文件,要有个机构来签名,实际是将 server.csr 文件提供给第三方可信任机构签名就可以。这里为了演示,将自生成 CA(root)。证书保存为 root.crt,key 保存为 root.key。iyunvlocalhost test# openssl req -new-x509 -keyout root.key -out root.crt -config openssl.cnfGenerating a 1024 bit RSA private key.
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号