【实战 Ids4】║ 给授权服务器加个锁——HTTPS配置

2022-04-11 11:34:41 浏览数 (1)

在上篇文章《【实战 Ids4】║客户端、服务端、授权中心全线打通!》中,我们正式的将三站打通,发布过后,有小伙伴反馈,可能Nginx对配置HTTPS安全协议有点儿问题,我也就半夜趁着没人打扰,疯狂的研究一波,发现其实挺简单的,不知道是不是我没有理解小伙伴提出的疑问点。 好了,马上开始。

其实关于配置HTTPS,主要的就是证书的问题,证书呢,又是公钥和私钥的方案,剩下的就是配置了,归根结底,只要我们搞到证书就行了,这里常见的是两种方案:

1、OpenSSL本地安装;(不推荐)

2、云平台免费申请SSL证书(本文讲的是腾讯云);

那我就简单的说说这两种方式吧。

OpenSSL本地安装

这种方案呢,主要是如果自己没有云服务平台,没有其他的信息,或者不想麻烦,只是想本地测试一波,可以简单的这么搞搞。

1、安装OpenSSL工具

官网下载地址:https://slproweb.com/products/Win32OpenSSL.html

2、解压安装证书

解压安装完成后,找到安装目录,去bin文件夹下,执行命令,如果你想使用命令,需要配置环境变量,但是如果不想配置,就直接用powershell来运行exe即可:

.openssl.exe req -newkey rsa:2048 -nodes -keyout laozhang.key -x509 -days 365 -out laozhang.cer

然后会提示让你输入一些内容,自己配置一下就行,比如我的:

这里生成了一个.key文件,还有一个.cer文件,具体的就是私钥和公钥,自己可以搜索下资料,这里不多说。

3、Nginx配置443

现在我们有了证书,就可以配置HTTPS转发了,如果你使用过IIS的肯定都知道,我们只需要配置一下443端口即可,Nginx也是如何,直接上代码:

代码语言:javascript复制

    server {
        listen         443 ssl;        #443端口
        server_name  ids.neters.club;  #网站域名,和80端口保持一致
        ssl             on;
        ssl_certificate laozhang.cer;       #证书公钥
        ssl_certificate_key  laozhang.key;  #证书私钥
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
        ssl_ciphers ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!3DES:!aNULL:!eNULL;
        ssl_prefer_server_ciphers  on;
        location / {
            proxy_pass http://ids.neters.club;
            proxy_redirect  off;     
            proxy_set_header        Host    $http_host;     
            proxy_set_header        X-Real-IP       $remote_addr;     
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;     
            proxy_set_header   Cookie $http_cookie;
            #proxy_cookie_path
            chunked_transfer_encoding       off;           
        }
    }

基本的配置方式和80很像,前提是你得配置好80端口,然后再配置443端口。

然后我们重启nginx,查看效果.

这里要说一下,这个证书是正确的,但是却是无效的,如果你有一定的计算机网络的经验呢,就知道了,不仅仅是证书正确就行了,还需要进行校验,比如常见的是:

1、文件校验;

2、邮件校验;

3、DNS校验;

刚刚咱们创建的,如果配置好后,我们虽然可以可以访问https,但是连接是不安全的,因为没有校验:

那这个时候怎么办呢,既然我们有域名,肯定就有对应的DNS运行商,让他们给我配置校验就好了,直接我们就在云平台申请即可,我说下我在腾讯云的申请。

云平台申请SSL证书

过程很简单,我们只需要取ssl页面,申请个免费的即可:

然后配置上我们的域名,和校验方式,

等待官方自动校验审核,大概0.5~1个小时左右,就通过了,我们下载下来可以看到,官方很人性化的给我们提供了多个服务器版本的文件,我们打开Nginx就可以看到两个文件了:

你可能会好奇,为啥是.crt文件,上边不是.cer文件么,这个可以问问计算机网络老师。

然后我们把文件提交到服务器,重启下Nginx,就看到了绿色的了:

三方调整请求域名

这个就是很简单的,只需要把之前的域名改成https的即可:

Blog.IdentityServer:

Blog.Core:

Blog.Admin:

强制转换HTTPS

如果说,你不想用http了,可以配置强制转到https上,nginx还是很强大的,我测试过可以,无论是重写的方式,还是return的方式,但是目前不想强制转换,大家自己试试就知道了。

0 人点赞