Nginx- 配置https证书方式访问

目录

前言

步骤原理

通过OpenSSL工具生成证书

将生成的证书配置在nginx


前言

因为在做oauth2授权登录的时候,第三方授权服务器配置的回调地址需要使用https的方式,故总结一下如何通过nginx来完成自己生成证书并配置https访问;

步骤原理

  1. 通过OpenSSL工具生成证书;
  2. 将生成的证书配置在nginx;

通过OpenSSL工具生成证书

创建私钥

$ openssl genrsa -des3 -out server.key 2048

# server文件名,可根据需要命名

根据提示输入密码

注意,centos版本如果是CentOS Linux release 8.0.1905 (Core)版本,私钥长度不能设置成1024位,必须2048位。不然再最后启动nginx时会出如下错误。

nginx: [emerg] SSL_CTX_use_certificate("/etc/nginx/ssl/server.crt") failed (SSL: error:140AB18F:SSL routines:SSL_CTX_use_certificate:ee key too small)

创建csr证书

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

#其中key文件为刚才生成的文件。

执行上述命令后,需要输入一系列的信息。输入的信息中最重要的为Common Name,这里输入的域名即为我们要使用https访问的域名 ,比如我输入的是localhost。其它的内容随便填即可。

以上步骤完成后,ssl文件夹内出现两个文件:server.csr 和 server.key

去除密码

$ openssl rsa -in server.key -out server_nopwd.key

#在加载SSL支持的Nginx并使用上述私钥时除去必须的口令,否则会在启动nginx的时候需要输入密码

然后输入密码,这个密码就是上文中在创建私钥的时候输入的密码

生成crt证书

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

#至此,证书生成完毕。我们发现,ssl文件夹中一共生成了4个文件。下面,配置https服务器的时候,我们需要用到的是其中的server.crt和server_nopwd.key这两个文件。

将生成的证书配置在nginx

在nginx.conf文件中,找到HTTPS server配置部分,把该段代码前面的#号去掉。然后分别修改其中的ssl_certificate和ssl_certificate_key配置项为刚才所生成的server.crt和server_nopwd.key这两个文件的目录。并配置server_name为localhost。修改后的该段配置如下:

    # HTTPS server
    #
    server {
       listen       443 ssl;
       server_name  localhost;

       ssl_certificate      ssl/server.crt;
       ssl_certificate_key  ssl/server_nopwd.key;

       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;

       ssl_ciphers  HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers  on;

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

启动nginx,并访问https://localhost

熟悉的界面,大功告成!!!

猜你喜欢

转载自blog.csdn.net/qq_26878363/article/details/115349215