前些天搭好了cas系统,这几天一致再搞nginx和cas的反向代理,一直不成功,但是走http还是测试通过的,最终确定是ssl认证证书这一块的问题,原本我在cas服务端里的tomcat已经配置了证书,并且能够使用了,但是现在我用nginx代理使用ssl与cas-server建立连接,就会失败(看了网上的大神(是不是真的大神先不管)说是nginx不支持与后台的加密连接的原因)。那么既然我nginx代理了cas-server,那么现在我nginx服务器就担任cas-server的角色,所以我需要把nginx作为ssl-server与cas-client作为ssl-client进行ssl连接,而nginx到cas-server则用http连接即可,下面开始配置。

为什么要写这个配置,因为我在网上看了很多文档,最后没有一个是能够正确生成的!发现有些人直接复制别人的东西,也不管对不对,真心坑,于是有了这篇文章...

1、下载编译安装openssl:

下载openssl(openssl-devel是openssl的开发包,可以用来建立修改依赖关系)

wget https://github.com/openssl/openssl/archive/OpenSSL-fips-2_0_11.tar.gz

解压编译然后进行安装,(我们主要讲证书生成,这里省略)

yum install openssl

2、生成根证书

2.1、先到要存放证书的路径下

cd /usr/local/nginx/conf/keys

2.2、生成证书密钥文件(key)

openssl genrsa -des3 -out eguid.key 1024

Enter pass phrase for root.key:  输入密码 

Verifying – Enter pass phrase for root.key: 重新输入密码

2.3、生成证书的申请文件(csr)

openssl req -new -key eguid.key -out eguid.csr

Enter pass phrase for root.key: 输入创建的密码

Country Name (2 letter code) [AU]:国家名,可以用代号

State or Province Name (full name) [Some-State]:省名

Locality Name (eg, city) []:城市名

Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany Corp.  公司名 

Organizational Unit Name (eg, section) []: 爱填不填

Common Name (eg, YOUR name) []:  不要输入 

Email Address []:admin@mycompany.com 电子邮箱

A challenge password []: 最好不填

An optional company name []: 最好不填

2.4、生成根证书(crt)

openssl x509 -req -days 365 -sha1 -extensions v3_ca -signkey eguid.key -in eguid.csr -out eguid.crt 

Enter pass phrase for eguid.key:输入之前你填的密码

解释一下:这里是用前面两个文件(key、csr)生成365天有效期的crt证书。

到这里呢,根证书就完成了,我这里完全没有任何问题,如果有问题可以找我。

----------------------------------------------------------------------------------------------------------------------------------------------

接下来创建server证书(服务器证书)

3、生成server服务器证书

3.1、生成server服务器密钥key

这里与根证书生成key是一样的,名字变一下就可以了
openssl genrsa –des3 -out server.key 1024

3.2、生成server 服务器申请文件csr

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

Country Name (2 letter code) [AU]: 国家名

State or Province Name (full name) [Some-State]: 省名

Locality Name (eg, city) []:市名

Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany Corp. 公司名 

Organizational Unit Name (eg, section) []: 可以不输入 

Common Name (eg, YOUR name) []:www.eguid.cn 服务器主机名,如果填写不正确,浏览器提示无效证书,但不影响使用 

Email Address []:642209085@qq.com 电子邮箱,随便填

A challenge password []: 最好不输入 

An optional company name []: 最好不输入

3.3、根据前面的根证书以及刚生成的两个文件生成server服务器证书

openssl x509 -req -days 365 -sha1 -extensions v3_req -CA eguid.crt -CAkey eguid.key -CAserial root.srl -CAcreateserial -in server.csr -out server.crt


有密码就输入密码,下面进行客户端证书生成

4、生成client客户端证书

4.1、生成client客户端key

openssl genrsa -des3 -out client.key 1024

4.2、生成client客户端证书申请文件csr

openssl req -new -key client.key -out client.csr

Country Name (2 letter code) [AU]: 国家名

State or Province Name (full name) [Some-State]: 省名

Locality Name (eg, city) []:市名

Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany Corp. 随便填

Organizational Unit Name (eg, section) []: 可以不输入 

Common Name (eg, YOUR name) []:随便输

Email Address []:642209085@qq.com 随便填

A challenge password []: 最好不输入 

An optional company name []: 最好不输入

4.3、根据根证书以及刚生成的两个文件生成client客户端证书 crt

openssl x509 -req -days 365 -sha1 -extensions v3_req -CA eguid.crt -CAkey eguid.key -CAserial root.srl -CAcreateserial -in client.csr -out client.crt
有密码输密码

4.4、生成client客户端证书安装包pfx

openssl pkcs12 -export -in client.crt -inkey client.key -out client.pfx
输入密码,输入密码,输入密码

到这里客户端证书就生成完了。

简单解释一下几种证书文件的作用及用途:

server.crt和server.key是配置单向SSL时需要使用的证书文件;

client.crt是配置双向SSL时需要使用的证书文件;

client.pfx是配置双向SSL时需要客户端安装的证书文件。



补充:
有些地方要用到pem证书,可以用crt和key合并生成pem证书:

catserver.key server.crt > server.pem

nginx反向代理cas-server之2:生成证书,centOS下使用openssl生成CA证书(根证书、server证书、client证书)的更多相关文章

  1. nginx反向代理cas server之1:多个cas server负载均衡配置以及ssl配置

    系统环境采用centOS7 由于cas server不支持session持久化方式的共享,所以请用其他方式代替,例如:组播复制. 为什么不支持session持久化:http://blog.csdn.n ...

  2. 跨域问题,解决方案-Nginx反向代理

    跨域问题,解决之道 跨域问题,在日常开发过程中,是一个非常熟悉的名词.今天的话题,结合我之前的项目场景,讨论下<跨域问题,解决之道>. 跨域是什么 跨域问题,是由于JavaScript出于 ...

  3. 使用python自动生成docker nginx反向代理配置

    由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...

  4. Server 主机屋云服务器 宝塔面板 部署nginx反向代理的vue项目

    图文记录云服务器上部署需要nginx反向代理的vue项目: 一.先登录并购买云服务器,根据自己需求购买,此处不详细介绍: 二.登录后如下图,点击进入云服务器界面: 三.在云服务器界面点击管理,进入管理 ...

  5. Nginx 反向代理、负载均衡、页面缓存、URL重写以及读写分离

    1.环境准备 前端Nginx:10.160.65.44 后端WEB服务器两台:10.160.65.49/10.160.65.50 2.安装Nginx: 下载nginx-1.9.15.tar.gz,放置 ...

  6. nginx 反向代理 与 Apache backend的配置联合配置

    nginx 反向代理 与 Apache backend的配置联合配置: 说明: nginx 将http映射到Apache上的特定子目录. 配置方法步骤: 1.  设置域名, 子域名映射到指定服务器ip ...

  7. Nginx反向代理+负载均衡简单实现(https方式)

    背景:A服务器(192.168.1.8)作为nginx代理服务器B服务器(192.168.1.150)作为后端真实服务器 现在需要访问https://testwww.huanqiu.com请求时从A服 ...

  8. Nginx反向代理+负载均衡简单实现(http方式)

    1)nginx的反向代理:proxy_pass2)nginx的负载均衡:upstream 下面是nginx的反向代理和负载均衡的实例: 负载机:A机器:103.110.186.8/192.168.1. ...

  9. nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录

    在日常运维工作中,运维人员会时常使用到nginx的反向代理,负载均衡以及缓存等功能来优化web服务性能. 废话不多说,下面对测试环境下的nginx反向代理+缓存开启+url重写+负载均衡(带健康探测) ...

随机推荐

  1. .net 做工作流时,生成项目后工具箱里有关工作流的东西不显示解决方法

    在做工作流模块时,遇到一个比较棘手的问题,那就是生成项目后工具箱里有关工作流的东西不显示,这个问题令人百思不得其解,经过查阅英文网站,终于找到解决方法: 把项目中的建模项目移除掉,再重新生成,奇迹出现 ...

  2. mui开发app之联网应用传输数据

    手机的app分为,在线和单机,在线就是类似于C/S模式,能与服务器与他人共享数据的程序,单机就是在没有网络下可以玩转的app. 目前互联网盛行的时代,99%的程序都是联网环境下工作的.那么如何开发本地 ...

  3. 学习java的感受

    学习java有一段时间了,发现现在只是才了解java,还在门槛外边. 有时候真感觉这是不是一种外星语言,各种方法各种类各种借口,总是傻傻分不清.  学过的知识过一个星期就开始模糊,有时半夜睡不着的时候 ...

  4. codeforces 782B The Meeting Place Cannot Be Changed (三分)

    The Meeting Place Cannot Be Changed Problem Description The main road in Bytecity is a straight line ...

  5. JavaFx自定义Tab-Order

    title: JavaFx自定义Tab-Order Tab-order是什么?在界面上当你按tab键触发焦点转移的功能,这就是tab order.但是Javafx有个缺陷就是不方便自己设置tab-or ...

  6. matlab笔记(1) 元胞结构cell2mat和num2cell

    摘自于:https://zhidao.baidu.com/question/1987862234171281467.html https://www.zybang.com/question/dcb09 ...

  7. NSLog (Log信息的输出)

    概述 NSLog是 cocoa的框架中提供的一个方法 NSLog的定义 NSLog定义在NSObjCRuntime.h中 NSLog与printf的差异 1)NSLog传递进去的格式化字符是NSStr ...

  8. OC-不可变数组NSArray

  9. 【SoDiaoEditor电子病历编辑器】阶段性更新啦

    转眼距离上一次v2正式发布已经过去一个半月了.github期间不定期push了二十几次,同时感谢分布在广州.福建.上海.北京的一众小伙伴,正是你们给出的建议,才让SoDiaoEditor不断完善. 我 ...

  10. 编写自己的一个简单的web容器(一)

    在之前的博客中我更大家说过Http协议是对tcp协议的封装,其底层还是使用tcp协议来进行数据传出的,浏览器实际上就是一个Socket客户端,今天呢我们就开始着手利用ServerSocket来编写一个 ...