您的位置:首页 > 运维架构 > Nginx

企业私有(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/private

CA的私有的权限要为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会话协商的开销,但同时得考虑线程的并发数了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: