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

来源:互联网 发布:电脑机器人软件 编辑:程序博客网 时间:2024/05/12 12:14

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.d2. mv CentOS-Base.repo CentOS-Base.repo.backup3. wget http://mirrors.163.com/.help/CentOS6-Base-163.repo4. mv CentOS6-Base-163.repo CentOS-Base.repo5.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会话协商的开销,但同时得考虑线程的并发数了。

0 0
原创粉丝点击