> CentOS > CentOS教程 >

CentOS openssl 签发证书

第一步:先建立一个 CA 的证书,

首先为 CA 创建一个 RSA 私用密钥,

       #cd /etc/pki/CA

#openssl genrsa -des3 -out ca.key 1024

(由于windows系统下的ssl_module不支持加密密钥,使用openssl genrsa -out ca.key 1024)

系统提示输入 PEM pass phrase,也就是密码,输入后牢记它。

生成 ca.key 文件,将文件属性改为400。

#chmod 400 ca.key

你可以用下列命令查看它的内容,

#openssl rsa -noout -text -in ca.key



利用 CA 的 RSA 密钥创建一个自签署的 CA 证书(X.509结构)

#openssl req -new -x509 -days 3650 -key ca.key -out ca.crt

然后需要输入下列信息:

Country Name: CN  //两个字母的国家代号

State or Province Name: Guangdong //省份名称

Locality Name: Guangzhou //城市名称

Organization Name: //公司名称

Organizational Unit Name:  //部门名称

Common Name:  //你的姓名

Email Address:  //Email地址

生成 ca.crt 文件,将文件属性改为400。

#chmod 400 ca.crt

你可以用下列命令查看它的内容,

#openssl x509 -noout -text -in ca.crt


第二步:下面要创建服务器证书签署请求,

#openssl genrsa -des3 -out server.key 1024

(同上windows下使用openssl genrsa -out server.key 1024)

这里也要设定pass phrase。

生成 server.key 文件,将文件属性改为400。

#chmod 400 server.key

你可以用下列命令查看它的内容,

#openssl rsa -noout -text -inserver.key



用 server.key 生成证书签署请求 CSR.

#openssl req -new -key server.key-out server.csr

这里也要输入一些信息,和CA中的内容类似。

至于 'extra' attributes 不用输入。

“Common Name: Chen Yang 你的姓名”这条信息请你输入你的服务器的域名或者IP地址

你可以查看 CSR 的细节

#openssl req -noout -text -inserver.csr


第三步:下面可以签署证书了

#openssl ca -config /etc/pki/tls/openssl.cnf -days 3650 -cert ca.crt -keyfile ca.key -in server.csr -out server.crt

注意需要手动创建一个CA目录结构
      └─ etc
            └─ pki

           └─CA

                 ├─newcerts

                 ├─index.txt

                 ├─serial 

在CA中建立 index.txt 空文件, serial文件 , serial文件中可输入01

否则运行这个命令会出错:I am unable to access the ./CA/newcerts directory....



将文件属性改为400,并放在安全的地方。

#chmod 400 server.crt


第四步:生成客户端证书

生成客户私钥:
       #openssl genrsa -des3 -out client.key 1024

生成客户证书
       #openssl req -new -key client.key -out client.csr

签证:
       ##openssl ca -config /etc/pki/tls/openssl.cnf -days 3650 -cert ca.crt -keyfile ca.key -in client.csr -out client.crt

转换成pkcs12格式,为客户端安装所用
       #openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.pfx

(责任编辑:IT)