您的位置:首页 > 理论基础 > 计算机网络

在linux(centos)使用openssl生成https证书并配置到nginx的实现过程

2016-07-31 11:37 921 查看
在测试的环境下,有时候还是需要自己给自己颁发https证书,此举可在linux下进行

首先进入到到我们自己在任意地方创建的文件夹;

然后就可以做如下操作了:


生成密钥、证书

第一步,为服务器端和客户端准备公钥、私钥
# 生成服务器端私钥
openssl genrsa -out server.key 1024
# 生成服务器端公钥
openssl rsa -in server.key -pubout -out server.pem

# 生成客户端私钥
openssl genrsa -out client.key 1024
# 生成客户端公钥
openssl rsa -in client.key -pubout -out client.pem


第二步,生成 CA 证书
# 生成 CA 私钥
openssl genrsa -out ca.key 1024
# X.509 Certificate Signing Request (CSR) Management.
openssl req -new -key ca.key -out ca.csr
# X.509 Certificate Data Management.
openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt


在执行第二步时会出现:
➜  keys  openssl req -new -key ca.key -out ca.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:Zhejiang
Locality Name (eg, city) []:Hangzhou
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My CA
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:localhost
Email Address []:


 

注意,这里的 
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
 后面生成客户端和服务器端证书的时候也需要填写,不要写成一样的!!!可以随意写如:My CA, My Server, My Client。

然后 
Common Name (e.g. server FQDN or YOUR name) []:
 这一项,是最后可以访问的域名,我这里为了方便测试,写成 
localhost
 ,如果是为了给我的网站生成证书,需要写成 
barretlee.com
 。

第三步,生成服务器端证书和客户端证书
# 服务器端需要向 CA 机构申请签名证书,在申请签名证书之前依然是创建自己的 CSR 文件
openssl req -new -key server.key -out server.csr
# 向自己的 CA 机构申请证书,签名过程需要 CA 的证书和私钥参与,最终颁发一个带有 CA 签名的证书
openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt


在这里会提示找不到 server.csr,所以执行下:

生成服务器端证书签名请求文件(csr文件);

openssl req -new -key server.key -out server.csr
生成Certificate Signing Request(CSR),生成的csr文件交给CA签名后形成服务端自己的证书.屏幕上将有提示,依照其 提示一步一步输入要求的个人信息即可(如:Country,province,city,company等).

# client 端
openssl req -new -key client.key -out client.csr
# client 端到 CA 签名
openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in client.csr -out client.crt


此时,我们的 keys 文件夹下已经有如下内容了:
└── ssl
├── ca.crt
├── ca.csr
├── ca.key
├── ca.pem
├── ca.srl
├── client.crt
├── client.csr
├── client.key
├── client.pem
├── server.crt
├── server.csr
├── server.key
└── server.pem


最后执行下

#openssl rsa -in server.key -out server_nopwd.key
#openssl x509 -req -days 365 -in server.csr -signkey server_nopwd.key -out server.crt

即可得到我们要的文件了

然后nginx部署

 server {

        listen       443 ssl;

        server_name  YOUR_HOST;

        ssl_certificate      server.crt;

        ssl_certificate_key  server_nopwd.key;

        location / {

            root   html;

            index  index.html index.htm;

        }

    }

重启下nginx即可,当然这个是不受信任的了     本文内容亲测可行,需要的小伙伴们可以试试~



参考文章:http://www.2cto.com/Article/201510/444706.html

                    http://blog.chinaunix.net/uid-26760055-id-3128132.html

                    http://www.cnblogs.com/tintin1926/archive/2012/07/12/2587311.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  centos nginx openssl linux
相关文章推荐