自制证书
在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/
网友评论