前些天搭好了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. three.js提供的几何体

    1.简单几何体 three.js提供的稍微简单点的几何体包括有:PlaneGeometry(平面).CircleGeometry(圆形).ShapeGeometry(塑性).CubeGeometry( ...

  2. bzoj4826 [Hnoi2017]影魔

    Description 影魔,奈文摩尔,据说有着一个诗人的灵魂.事实上,他吞噬的诗人灵魂早已成千上万.千百年来,他收集了各式各样的灵魂,包括诗人.牧师.帝王.乞丐.奴隶.罪人,当然,还有英雄.每一个灵 ...

  3. salesforce零基础学习(七十一)级联表DML操作

    曾经做项目没有考虑那么多,对于级联表操作都是正常的一步一步操作,没有考虑过失败情况,最近项目遇见了失败的情况,导致碰到了相应的情况,特此mark一下,免得后期继续踩坑. 需求如下:新建页面,页面中包含 ...

  4. 为什么要用Handler ?

    我的理解,Handler的好处之一就是配合子线程处理数据之后控制UI的显示. 如下是http://www.cnblogs.com/sydeveloper/p/3312865.html的完美解释: 当应 ...

  5. 最大流算法之Dinic

    引言: 在最大流(一)中我们讨论了关于EK算法的原理与代码实现,此文将讨论与EK算法同级别复杂度(O(N^2M))的算法--Dinic算法. Dinic算法用到的思想是图的分层结构,通过BFS将每一个 ...

  6. ng-options语法详解

    我们先看下options的这条语句 ng-options="value.id as value.label group by value.group for value in myOptio ...

  7. Python变量运算字符串等

    一,作用域 操作 name = 'liuyueming' if 1==1:... print name... liuyueming 两次回车执行 修改代码 >>> if 1==1:. ...

  8. 转:Maven项目编译后classes文件中没有dao的xml文件以及没有resources中的配置文件的问题解决

    问题1:在做spring+mybatis时,自动扫描都配置正确了,却在运行时出现了如下错误.后来查看target/classes/.../dao/文件夹下,发现只有mapper的class文件,而没有 ...

  9. JAVA进程占用CPU分析

    在一次生产环境中,服务器负载报警,SSH登录上看到CPU占用很高. 1.执行top命令,看到进程号为9737的进程持续占用CPU 2.怀疑是否是进程配置的内存不够了,引发了fullGC导致CPU占用高 ...

  10. React入门---组件-4

    组件:网页可以分为多个模块,比如头部,底部,分享等各种模块,这些模块在其他页面也可能会用到,我们把这些分开,每一个模块当作一个组件,进行复用. 接下来直接以头部 header作为一个组件来进行demo ...