一、创建证书
证书(Cerificate)的基本作用是将一个公钥和安全个体(个人、公司、组织等)的名字绑定在一起。
一般情况下,制作证书要经过几个步骤,如上图所示。首先用openssl genrsa生成一个私钥,然后用openssl req生成一个签署请求,最后把请求交给CA,CA签署后就成为该CA认证的证书了。如果在第二步请求时加上-x509参数,那么就直接生成一个self-signed的证书,即自己充当CA认证自己。
除了这种方式外,在Debian或者Ubuntu系统中有更加简便的方法制作self-signed证书使用make-ssl-cert命令。该命令在ssl-cert的包里,一般会伴随着Apache的安装而安装,可能单独安装也可以。
这里先说下证书相关的几个名词:
RSA私钥能解密用证书公钥加密后的信息。通常以.key为后缀,表示私钥也称作密钥。是需要管理员小心保管,不能泄露的。CSR(Certificate Signing Request)包含了公钥和名字信息。通常以.csr为后缀,是网站向CA发起认证请求的文件,是中间文件。证书通常以.crt为后缀,表示证书文件。CA(Certifying Authority)表示证书权威机构,它的职责是证明公钥属于个人、公司或其他的组织。
1、制作自签名证书
通过make-ssl-cert创建自签名证书
如果没安装这个工具,先用apt-get install ssl-cert
make-ssl-cert generate-default-snakeoil注:默认方式生成的公钥(证书)在/etc/ssl/certs/ssl-cert-snakeoil.pem,私钥在/etc/ssl/private/ssl-cert-snakeoil.key。make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/ssl/private/apache2.pem
这里生成的证书采用pem格式,这个pem格式档案中包含了私钥和公钥(证书)两部分内容。
注:在要求输入Common Name(eg, YOUR name)时,输入你的主机名。Common Name必须和httpd.conf中server name必须一致,否则apache不能启动。启动apache时错误提示为:RSA server certificate CommonName (CN) `Koda’ does NOT match server name!?
make-ssl-cert是只能由root执行的命令
通过openssl命令行创建自签名证书
这里生成的证书也采用pem格式,这个pem格式档案中包含了私钥和公钥(证书)两部分内容。如果你将keyout和out分别采用不同的文件名,那keyout和out所对应的文件就会分别存放私钥和公钥(证书)。
openssl req -x509 -newkey rsa:1024 -keyout /etc/ssl/private/apache.pem -out /etc/ssl/private/apache.pem -nodes -days 999openssl genrsa -des3 1024 >server.key
注:采用DES3加密新产生的私钥server.key文件,每次要使用这个私钥时都要用输入密码。如果您的电子证书是用在apache等服务器中,您每次启动服务器时都要输入密码一次。
openssl genrsa 1024 >server.key
注:采用128位rsa算法生成密钥server.key文件,这种方法产生的证书在apache等服务器中启动服务器时不会要求输入密码,同时也不会把私钥加密。
步骤2: 生成证书请求文件(Certificate Signing Request)
openssl req -new -key server.key > server.csr
注:这是用步骤1的密钥生成证书请求文件server.csr, 这一步输入内容和创建自签名证书的内容类似,按要求输入就可以了。
步骤3: 签署生成证书
您只要把server.csr这个档案给第三方CA(Certificate Authority)机构签署生成证书就可以了。
http://www.mike.org.cn/articles/ubuntu-config-apache-https/
http://www.mike.org.cn/
没有评论:
发表评论