美文网首页
linux下nginx配置ssl

linux下nginx配置ssl

作者: 犀鸟 | 来源:发表于2020-11-27 09:56 被阅读0次

自制证书

在nginx目录下(/etc/nginx)创建ssl目录

cd /etc/nginx

sudo mkdir ssl

生成证书

openssl genrsa -des3 -passout pass:123456 -out yenaer.key 2048;

备注:123456是密码,2048是加密强度

openssl req -new -subj "/C=CN/ST=SiChuan/L=ChengDu/O=yenaer/OU=yenaer/CN=sso.yenaer.cn" -passin pass:123456 -key yenaer.key -out yenaer.csr

备注:C表示国家、ST表示省份、L表示城市、O表示组织或公司、OU表示部门;CN表示域名,非常重要

openssl x509 -req -days 3650 -in yenaer.csr -signkey yenaer.key -out yenaer.crt

备注:3650表示有效期是10年


nginx配置

server {

    listen 443 ssl;

    server_name sso.yenaer.cn

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

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

    proxy_set_header Host $host:$server_port;

    proxy_set_header X-Forwarded-Proto  https;

    proxy_set_header X-Http-scheme https;

}

让所有请求都访问https

server {

    listen  80;

    rewrite ^(.*)$  https://sso.yenaer.cn$request_uri;

}

nginx 配置检测:sudo /usr/sbin/nginx -t

nginx重启:sudo service nginx reload

因为是自制证书,没有得到权威机构认证,浏览器会提示不安全,你可以选择继续访问。


如果有java客户端后台访问自制证书的https服务,你需要在客户端的jre中添加证书才允许访问,如果cas服务是https协议,客户端系统所在的服务器需要导入证书

客户端导入证书

sudo keytool -import -alias yenaer-sso -keystore /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/cacerts -file ./yenaer.crt -trustcacerts -storepass changeit

客户端删除证书

sudo keytool -delete -alias yenaer-sso -keystore /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/cacerts -storepass changeit

客户端查看证书

sudo keytool -list -keystore  /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/cacerts -storepass changeit

备注:-keystore是jre下的cacerts,changeit是jdk的证书默认密码


我所使用的linux版本是ubuntu16,不同环境的nginx路径和jdk路径可能不一样


如果没有域名又要使用域名进行测试,可以修改本地的hosts文件,添加一条映射记录,比如:

192.168.2.45 sso.yenaer.cn


在https://freessl.org可以申请免费的ssl证书,下载KeyManager客户端申请比较方便,前提是自己要有域名,需要进行域名验证


https://www.howtoing.com/https-build-configure-ubuntu-nginx-ssl-certificate/

相关文章

网友评论

      本文标题:linux下nginx配置ssl

      本文链接:https://www.haomeiwen.com/subject/fjwtwktx.html