Openssl: 基于openssl的nginx服务配置

环境:

CA服务器:192.168.1.121

WEB服务器: 192.168.1.107

一、在CA服务器上生成自签证书

首先进入CA服务器的CA目录中,如果找不到可以使用find进行查找,如下图
在这里插入图片描述

1.生成根私钥

(umask 077;openssl genrsa -out private/cakey.pem 2048)

在这里插入图片描述

umask:存放CA私钥文件权限700
genrsa:使用rsa加密算法
-out:指定私钥存放位置
2048:密钥长度
2.2 生成自签证书

2.生成自签证书

openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655

在这里插入图片描述

req:生成证书工具
-x509:生成一个自签署证书
-key:指定密钥文件
-out:证书位置
-days:证书期限
Common Name:很重要,部署web服务器时一定对应到web服务器的域名。

填写的信息,在/etc/pki/tls/openssl.cnf可配置默认。

3.创建所需的目录和文件

touch index.txt

echo 01 > serial

在这里插入图片描述

目前,一个自签署的CA可以使用了。
在这里插入图片描述

二、在WEB服务器端生成证书颁发请求,并发送给CA

1.创建证书保存目录

mkdir /usr/local/nginx/ssl

2.生成私钥

(umask 077;openssl genrsa -out nginx.key)

在这里插入图片描述
3.生成证书请求

openssl req -new -key nginx.key -out nginx.csr

Ps:Common Name:一定要填写正确,就是客户端访问时的域名。

其他和自签署证书一样。

在这里插入图片描述

4.发送证书请求给CA服务器

scp httpd.csr 192.168.1.121:/tmp
三、在CA服务器上签署请求证书

1.签名

openssl ca -in /tmp/nginx.csr -out /tmp/nginx.crt -days 3655

在这里插入图片描述

3.发送证书给WEB服务器

scp /tmp/nginx.crt 192.168.1.107:/usr/local/nginx/ssl

删除tmp目录下的证书

rm -rf /tmp/nginx.c*

4.Web服务器使用ssl

/usr/local/nginx/conf/vhosts/test.conf 文件配置使用ssl

案例:

server {

    listen 80;

    listen 443 ssl;

        server_name  www.mynginx.com;

   ssl_certificate /etc/nginx/ssl/nginx.crt;

        ssl_certificate_key /etc/nginx/ssl/nginx.key;

    location / {

        root   /var/www/python;

        index  index.html index.htm;

         }

}

个人配置如下:

server {
        listen       80;
        server_name  www.test.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html/test;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }

server {

        listen 443 ssl;

        server_name  www.test.com;

        ssl_certificate /usr/local/nginx/ssl/httpd.crt;

        ssl_certificate_key /usr/local/nginx/ssl/httpd.key;


        location / {
            root   html/test;
            index  index.html index.htm;
        }


}

然后重启nginx

/usr/local/nginx/sbin/nginx -s reload

nginx结构
在这里插入图片描述

5.由于www.ish.com并不是真实的域名,故需要在hosts文件下加入该域名进行本地解析

访问https://www.ihs.com,会出现证书错误,这是由于证书是私有CA颁发的,故需要做如下步骤:

CA服务器上的证书cacert.pem导出到本地,改名为cacert.crt,点击
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
退出浏览器,清楚缓存,再重新访问https://www.test.com/

在这里插入图片描述
出现了一把锁,证书错误提示也消失了。

参考文档:

https://www.cnblogs.com/zydev/p/5551654.html

https://blog.csdn.net/weixin_30576827/article/details/97426160

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值