您的位置:首页 > 运维架构

openssl 自建CA,并签发证书

2015-02-09 09:21 375 查看
第一部分:自建CA

注:为了更好管理自建CA,在下文中,为没有特殊说明的情况,CA根目录都是指的自建CA的根目录。

1. 创建CA根目录,并初始化一些文件:

mkdir $HOME/myca
cd $HOME/myca
mkdir certs private conf
echo "01" > serial
echo "" > index.txt
cat > conf/gen_ca.cnf << EOF
# CNF START HERE
[req]
default_keyfile = [my home]/myca/private/cakey.pem
default_md = md5
prompt = no
distinguished_name = myca_distinguished_name
x509_extensions = myca_extentions

[myca_distinguished_name]
organizationName = myca_org
organizationalUnitName = myca_unit
commonName = myca_common
emailAddress = myca@ca.com

[myca_extentions]
basicConstrains = CA:true
# CNF END HERE
EOF


2. 生成CA所需要的私钥及自签证书:

// 生成私钥,并自签

openssl req -x509 -newkey rsa:2048 -out cacert.pem -outform PEM -days 365 -config conf/gen_ca.cnf

//根据提示,输入相应的密码及其他内容

//查看上面生成的CA证书

openssl x509 -in cacert.pem -text -noout


3. 生成CA签发证书的配置文件:

cat > conf/myca.cnf << EOF
# cnf start here
[ca]
default_ca = myca

[myca]
dir            = [my home]/myca/
database       = $dir/index.txt
new_certs_dir  = $dir/certs

certificate    = $dir/cacert.pem
serial         = $dir/serial
private_key    = $dir/private/cakey.pem
RANDFILE       = $dir/private/.rand

default_days   = 365
default_crl_days= 30
default_md     = md5
unique_subject = no
policy         = my_policy

[my_policy]
countryName             = optional
stateOrProvinceName     = optional
localityName            = optional
organizationName        = optional
organizationalUnitName  = optional
commonName              = supplied
emailAddress            = optional
# cnf ended here
EOF


第二部分:生成SSL所需私钥及CA签发请求

mkdir $HOME/myssl
cd $HOME/myssl
openssl req -newkey rsa:2048 -keyout serverkey.pem -keyform PEM -out serverreq.pem -outform PEM
#按照提示输入密码及其他相关信息,执行成功后,会输出serverkey.pem(私钥)和serverreq.pem(签发请求文件,需要给CA进行签发,然后得到相应的签发证书)

#查看签发请求内容(与其他查看类似):
openssl req -in serverreq.pem -text -noout


第三部分:使用自建CA签发上面生成证书签发请求

openssl ca -in serverreq.pem -out servercert.pem -config $HOME/myca/conf/myca.cnf

#需要特别注意-config参数,指定了所使用的配置文件及CA,在配置文件中有自建CA的参数信息。具体看上面的配置文件


第四部分:生成ssl所需的证书:

mkdir $HOME/myssl
cd $HOME/myssl
#生成服务端私钥及签发请求,生成私钥 serverkey.pem;签发请求serverreq.pem
openssl req -newkey rsa:2048 -keyout serverkey.pem -keyform PEM -out serverreq.pem -outform PEM

#CA签发证书,生成证书文件servercert.pem
openssl ca -in serverreq.pem -out servercert.pem -config $HOME/myca/conf/myca.cnf

#生成客户端私钥及签发请求,生成私钥 clientkey.pem;签发请求clientreq.pem
openssl req -newkey rsa:2048 -keyout clientkey.pem -keyform PEM -out clientreq.pem -outform PEM

#CA签发证书,生成证书文件clientcert.pem
openssl ca -in clientreq.pem -out clientcert.pem -config $HOME/myca/conf/myca.cnf

SSL连接中,需要使用到的文件有:

serverkey.pem servercert.pem cacert.pem

clientkey.pem clientcert.pem cacert.pem

cacert.pem是自建CA中自签得到的CA证书,在$HOME/myca/目录下。


上述使用openssl 版本号:OpenSSL 1.0.0-fips 29 Mar 2010
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息