nginx 使用密码认证

nginx 使用密码认证,第1张

1.一些非公开的页面,只想给特定的用户访问,但是又不想写权限控制

2.临时需要请求线上的调试接口,但是这些接口不能直接暴露

1.安装一个生成账号密码的小工具

2.生成一个账号密码

3.在nginx配置启用密码认证

4.重新加载配置文件

通过分析,登录凭证并不是放在cookie而是在header(字段是Authorization)。所以重新打开浏览器的时候就需要重新登录了。

对于 NGINX 的 HTTPS 配置,通常情况下我们只需要实现服务端认证就行,因为浏览器内置了一些受信任的证书颁发机构(CA),服务器端只需要拿到这些机构颁发的证书并配置好,浏览器会自己校验证书的可用性并通过 SSL 进行通讯加密。

但特殊情况下我们也需要对客户端进行验证,只有受信任的客户端才能使用服务接口,此时我们就需要启用双向认证来达到这个目的,只有 当客户端请求带了可用的证书才能调通服务端接口 。

CA 与自签名

CA 是权威机构才能做的,并且如果该机构达不到安全标准就会被浏览器厂商“封杀”,前不久的沃通、StartSSL 就被 Mozilla、Chrome 封杀了。不过这并不影响我们进行双向认证配置,因为我们是自建 CA 的..

为了方便,我们就在 NGINX 的目录下进行证书相关制作:

cd /etc/nginx

mkdir ssl

cd ssl

制作 CA 私钥

openssl genrsa -out ca.key 2048

制作 CA 根证书(公钥)

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

注意:

Common Name 可以随意填写

其他需要填写的信息为了避免有误,都填写 . 吧

服务器端证书

制作服务端私钥

openssl genrsa -out server.pem 1024

openssl rsa -in server.pem -out server.key

生成签发请求

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

注意:

Common Name 得填写为访问服务时的域名,这里我们用 usb.dev 下面 NGINX 配置会用到

其他需要填写的信息为了避免有误,都填写 . 吧(为了和 CA 根证书匹配)

用 CA 签发

openssl x509 -req -sha256 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -out server.crt

客户端证书

和服务端证书类似:

注意:

Common Name可以随意填写

其他需要填写的信息为了避免有误,都填写 . 吧(为了和 CA 根证书匹配)

至此需要的证书都弄好了,我们可以开始配置 NGINX 了。

其中 ssl_client_certificate /etc/nginx/ssl/ca.crt的意思是使用 CA 证书来验证请求带的客户端证书是否是该 CA 签发的。

配置好后就就重新加载 NGINX 吧:

service nginx reload

好了,下面我们可以开始验证了。

请求验证

验证过程可以选择在其他机器或是本机,为了能够解析 usb.dev,还需要配置一下 /etc/hosts:

127.0.0.1 usb.dev

如果用浏览器验证,需要把客户端证书导出成 p12 格式的,这里略过。我们重点是通过 curl 进行验证:

curl --insecure --key client.key --cert client.crt ' https://usb.dev'

其中 --insecure 是忽略自建 CA 的非权威性。如果你验证正常那说明你运气好,因为这里有个 深坑:某些版本的 curl 会报错:

这些报错版本的 curl 居然要严格要求 --cert 实参的路径要完全正确,比如当前目录下面要用 --cert ./client.crt,用 --cert client.crt 是错误的。爬坑过程是启用了 -v 参数来观察完整的过程,发现其中有一条告警:

转自: http://www.cnblogs.com/UnGeek/p/6049004.html

CA证书就是文件youdomain.crt和私钥文件youdomain.key

请确认所收到的证书文件是您需要的陕西CA证书。

二、安装服务器证书

1. 配置ssl证书

打开nginx安装目录下conf目录中的nginx.conf文件,找到被注释掉的server 配置,进行修改:

 server {

listen         443 ssl

server_name  www.yourdomian.com

ssl             on

ssl_certificate /usr/local/nginx/conf/youdomain.crt       #证书公钥

ssl_certificate_key  /usr/local/nginx/conf/youdomain.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 / {

root   html

index  index.html index.htm

}

}

把服务器证书youdomain.crt和私钥youdomain.key上传到配置文件指向的目录/usr/local/nginx/conf/(具体文件路径可以自行指定)

保存退出,并重起nginx配置nginx -s reload后通过https方式访问您的站点,测试站点证书的安装配置。

三、访问测试

服务器若部署了SSL证书,浏览器访问时将出现安全锁标志;

备份和恢复

1.     备份服务器证书

备份服务器证书私钥文件youdomain.key,服务器证书文件youdomain.crt,即可完成服务器证书的备份 *** 作。

2.     恢复服务器证书

参照步骤“三、安装服务器证书”即可完成恢复 *** 作。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11352153.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存