企业私有(OpenSSL)CA配置和Nginx配置SSL

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会话协商的开销,但同时得考虑线程的并发数了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值