企业私有(OpenSSL)CA配置和Nginx配置SSL
2016-11-24 17:27
363 查看
1、查看CA服务器环境
# uname -a
2、查看Linux服务器中是否安装OpenSSL
# rpm -q openssl
也可以通过OpenSSL的命令来查看自己版本号
# openssl version
3、修改OpenSSL软件的配置文件
查看OpenSSL软件配置文件的位置# rpm -ql openssl
/etc/pki/tls/openssl.cnf(这个是OpenSSL的主配置文件)
当前系统中index.txt和serial文件没有创建则手动创建
index.txt:CA服务器颁发的所有证书,可以在这个文件中查询
serial:当前证书的序列号默认是以01开始的
# touch /etc/pki/CA/index.txt # touch /etc/pki/CA/serial # echo 01 > /etc/pki/CA/serial # cat /etc/pki/CA/serial
修改CA签发的机构名称的默认值
4、给CA服务器准备自己的私钥和证书
4.1、CA创建私钥
CA的私钥需要放到/etc/pki/CA/privateCA的私有的权限要为600只能自己查看
# (umake 700; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
4.2、创建一个自签证书
# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem
5、准备一个nginx服务器
5.1、配置nginx服务器安装前所有需要依赖的软件包(此用软件包是通过yum来安装)
配置一下163的yum源1. cd /etc/yum.repos.d 2. mv CentOS-Base.repo CentOS-Base.repo.backup 3. wget http://mirrors.163.com/.help/CentOS6-Base-163.repo 4. mv CentOS6-Base-163.repo CentOS-Base.repo 5.yum clean all
安装nginx服务器之前软件包
yum -y install make gcc gcc-c++ ncurses-devel yum -y install zlib zlib-devel yum -y install openssl openssl-devel yum -y install pcre-devel
5.2、编译nginx源代码包
# wget http://nginx.org/download/nginx-1.8.1.tar.gz # tar xf nginx-1.8.1.tar.gz# cd nginx-1.8.1
编译nginx
#./configure \ --prefix=/usr/local/nginx \ --conf-path=/usr/local/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --pid-path=/var/run/nginx/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --with-http_ssl_module \ --with-http_flv_module \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --http-client-body-temp-path=/var/tmp/nginx/client/ \ --http-proxy-temp-path=/var/tmp/nginx/proxy/ \ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \ --http-scgi-temp-path=/var/tmp/nginx/scgi \ --with-pcre
在编译的nginx的时候需要开启--with-http_ssl_module
# mkdir -p /var/tmp/nginx/client/ #make && make install
5.3、nginx服务器创建私钥
在nginx服务器中创建ssl文件夹,将私钥和证书放到这个目录中# mkdir -p /usr/local/nginx/ssl # (umask 077;openssl genrsa -out /usr/local/nginx/ssl/nginx.key 2048)
5.4、nginx服务器创建证书请求
# openssl req -new -key /usr/local/nginx/ssl/nginx.key -out /usr/local/nginx/ssl/nginx.csr
5.5、将nginx服务器上生成证书请求发送到CA服务器上签证
将nginx服务器上的证书请求发送到CA服务器/tmp目录下# scp /usr/local/nginx/ssl/nginx.csr root@172.16.41.200:/tmp
使用CA服务器来签署nginx服务器证书请求
# openssl ca -in /tmp/nginx.csr -out /tmp/nginx.crt
5.6、将生成的nginx证书拷贝到nginx服务器
# scp /tmp/nginx.crt root@172.16.41.201:/usr/local/nginx/ssl
CA服务器上产生的nginx证书临时文件需要删除保证证书的安全性
# rm -rf /tmp/nginx.c*
5.7、配置nginx服务器SSL
5.7.1、修改nginx的配置文件/usr/local/nginx/nginx.conf修改红色框标记的地方
server { # listen 80; listen 443; #server_name localhost; server_name test.org; ssl on; ssl_certificate /usr/local/nginx/ssl/nginx.crt; ssl_certificate_key /usr/local/nginx/ssl/nginx.key; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
1、网站用户通过域名访问有可能是http://test.org来访问,可以将http的所有请求跳转到https
server { listen 80; server_name test.org; rewrite ^(.*)$ https://$host$1 permanent; }
2、网站用户通过域名访问有可能是http://test.org来访问,可以将http的所有请求跳转到https
server { listen 80; server_name test.org; return 301 https://$server_name$request_uri;} }
5.7.2、检查nginx配置语法是否有错误
# /usr/local/nginx/sbin/nginx -t
5.7.3、如果没有问题那么启动nginx
# /usr/local/nginx/sbin/nginx
5.7.4、查看nginx是否启动
# ps -aux|grep nginx
nginx服务器走的https协议,HTTPS监听在443端口上,那么在Linux服务器上需要打开443端口
# vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
重新Linux的防火墙
# /etc/init.d/iptables restart
5.7.5、在window上的浏览器来访问这个服务
需要在window的C:\Windows\System32\drivers\etc\hosts文件配置ip域名映射
添加红色标记的这一行
172.16.41.201 www.test.org
在浏览器中来访问https://www.test.org
5.8、https优化参数
ssl_session_cache shared:SSL:10m; : 设置ssl/tls会话缓存的类型和大小。如果设置了这个参数一般是shared,buildin可能会参数内存碎片,默认是none,和off差不多,停用缓存。如shared:SSL:10m表示我所有的nginx工作进程共享ssl会话缓存,官网介绍说1M可以存放约4000个sessions。详细参考serverfault上的问答ssl_session_cache。ssl_session_timeout : 客户端可以重用会话缓存中ssl参数的过期时间,内网系统默认5分钟太短了,可以设成30m即30分钟甚至4h。
设置较长的keepalive_timeout也可以减少请求ssl会话协商的开销,但同时得考虑线程的并发数了。
相关文章推荐
- 精心为您准备的Openssl实现私有CA的详细过程,以及如何配置安装证书 推荐
- 在企业内部使用openssl创建私有CA
- FreeBSD下Nginx配置ssl-自建CA给网站签发SSL证书
- RedHat 学习笔记 基于ssl的httpd服务配置 (openssl创建CA)
- SSL及其开源实现OpenSSL+创建私有CA
- 利用openssl实现私有CA以及mysql服务器的ssl连接的配置
- 建立私有CA及Nginx绑定SSL加密
- Nginx服务器中关于SSL的安全配置详解
- openssl + apache + mod_ssl安装配置调试过程-
- 在Nginx上配置NameCheap免费SSL
- Nginx 配置 SSL 证书 + HTTPS 站点
- openssl + apache + mod_ssl安装配置调试过程
- 安装和配置企业根 CA
- 在Web服务器上配置SSL来验证CA服务器的搭建过程
- 【转载】Nginx 配置 SSL 证书步骤小记
- Nginx+Tomcat SSL配置指南|Nginx+Tomcat实现https安全链接
- svn (subversion)+Apache(httpd)+SSL(openssl)的配置
- linux 下安装nginx经常出现 make[2]: Leaving directory `/usr/local/ssl' 或make[2]: Leaving directory `/usr/local/openssl' 找不到的情况解决方法
- openssl配置和CA架设
- 使用openssl为apache2配置ssl