`简介`
本文基于Openssl介绍自签名证书的生成和应用实践。
一、需要openssl的版本为1.0.0
查看服务器上的版本:
openssl version
二、安装openssl-1.0.0
`备份原文件`
/usr/bin/下的openssl文件移走或删除(不建议删除)
/usr/include/openssl文件夹改名
注:为了安装成功,移走或删除/usr/bin/pod2man(否则会安装版本1.0.0失败)
`安装`
1、上传到/usr/local下
2、解压
tar -vxzf openssl-1.0.0.tar.gz
3、进入解压后的目录,编译
./config --prefix=/usr/local/openssl
4、安装
make install
5、软连接文件
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
三、生成证书文件
cd /usr/local/openssl/ssl
mkdir CA
cd CA
mkdir certs
mkdir crl
mkdir newcerts
touch index.txt
echo "01">>serial
修改文件位置
说明:我的路径:/usr/local/openssl/ssl/CA
`自签CA证书`
1. 生成CA私钥
openssl genrsa -des3 -out ca.key 2048
说明:此命令应该会要求你输入一个ca.key对应的加密密码。输入后密码需要记下来后面还要用。
2. 生成不加密的CA私钥(可不做)
openssl genrsa -out ca_decrypted.key 2048
3. 生成CA公钥即CA根证书
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
说明:输入命令后应该会需要你输入一些证书相关的周边信息。比如证书颁发机构所在地址,机构 名称等等。这里可以都直接回车不填,唯一需要注意的是Common Name那一栏。为了后面操作顺利,按照我现有的实践将这里填写主机名或者主机IP。
`生成HTTPS证书并且用CA证书签名`
1. 生成HTTPS证书私钥
openssl genrsa -des3 -out server.pem 1024
说明:这里的xxxx指的就是上面说的主机名或者主机IP。下面类似不重复说明了
2. 生成不加密的https主机证书私钥
openssl rsa -in server.pem -out server.key
3. 生成签名请求
openssl req -new -key server.pem -out server.csr
4. 用CA进行签名
openssl ca -policy policy_anything -days 3650 -cert ca.crt -keyfile ca.key -in server.csr -out server.crt
`最后需要的证书`
server.crt
server.key
四、配置nginx
server{
listen 443;
ssl on;
ssl_certificate 证书路径/server.crt;
ssl_certificate_key 证书路径/server.key;
keepalive_timeout 70;
location / {
proxy_pass 请求的路径;
}
}