近期在学习Linux的相关知识,作为一个运维工程师所必备的知识点,一个web服务尤其运行在互联网上的很容易攻击,所以为了保证安全最起码的需要对web服务配置SSL,这样能提高一定的安全性,所以我们今天介绍,Centos7+Nginx通过windows CA颁发及配置SSL服务,当然如果是生成环境的话,一般都会申请第三方证书,比如沃通等第三方证书颁发机构,今天我们主要使用的是内部的windows CA服务为nginx颁发证书,当然也可以使用Nginx的自签名证书,但是那样每次访问都会有相关的警告 提醒,具体见下:
环境介绍:
Hostname:DC.IXMSOFT.COM
IP:192.168.5.10
Role:DC、DNS、CA
OS:windows Server 2016
Hostname:D-S.IXMSOFT.COM
IP:192.168.5.20
Role:Nginx Service
OS: Centos 7.1
准备操作系统后及安装完成对应的配置:
1.hostnamectl set-hostname d-s
2.vim /etc/selinux/config--->selinux:disabled
3.添加防火墙规则:firewall-cmd –zone=public --add-port=”80/tcp” –permenant
接下来就是安装nginx仓库
1
|
yum
install
http:
//nginx
.org
/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0
.el7.ngx.noarch.rpm
|
1
|
yum
install
nginx
|
我们同样给nginx配置一个页面,主要是为了区分
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
vim
/usr/share/nginx/html/index
.html
<html>
<
head
>
<title>Welcome to Nginx!<
/title
>
<style>
body {
35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
<
/style
>
<
/head
>
<body bgcolor=
"#BE77FF"
>
<h1>Welcome to D-S Nginx Service<
/h1
>
<h2>HostName:D-S<
/h2
>
<h2>IP:192.168.5.20<
/h2
>
<
/body
>
<
/html
>
|
然后启动nginx服务
1
|
systemctl start nginx
|
接下来开始申请私钥
1
2
3
|
cd
/etc/pki/tls
Openssl genrsa -out server.key 2048
Server.key 是私钥
|
用私钥serverkey 文件生成证书请求文件csr
1
2
3
4
5
6
7
8
9
|
openssl req -new -key server.key -out server.csr
Server.csr 是证书请求文件
域名,也称为 Common Name,因为特殊的证书不一定是域名:nginx.ixmsoft.com
组织或公司名字(Organization):Example, Ixmsoft
部门(Department):可以不填写,城市(City):Beijing
省份(State / Province):Beijing
国家(Country):CN
加密强度:2048 位,如果你的机器性能强劲,也可以选择 4096 位
如果是泛域名证书,则应该填写*.ixmsoft.com
|
我们打开刚才生成的csr文件
此时,我们有了csr文件我们通过这个文件在内部的windows CA服务器上申请证书
使用base64位编码的CMC或者RKCS提交证书申请
然后我们将csr文件的内容粘贴,选择web服务证书模板提交
一定要下载basic64编码这个类型,不然在nginx启动的时候回报错
下载证书完成
我们将该证书上传到192.168.5.20上,nginx服务器上
我们将证书拷贝到证书目录下
1
2
|
cp
certnew.cer
/etc/pki/tls
ls
|
我们为了证书统一 配置,再nginx的目录下创建了一个ssl目录,专门存放证书文件
1
2
|
cd
/etc/nginx
Mkdir ssl
|
然后我们将刚才的那三个文件拷贝到这个目录下
1
|
cp
/etc/pki/tls/server
.key server.csr certnew.crt
/etc/nginx/ssl/
|
我们为了好记名,将申请的证书修改名字及扩展名
1
|
mv
certnew.cer web.pem
|
在配置ssl之前,我们先访问以下,默认是80
接下来我们配置ssl,默认的配置文件
1
|
vim
/etc/nginx/conf
.d
/default
.conf
|
我们因为不使用80,所以default.conf用不到,mv default.conf default.conf.bak 重命名
我们在/etc/nginx/conf.d/下新建一个配置文件
1
2
3
4
5
6
7
8
9
10
11
12
|
vim nginx-ssl.conf
server {
listen 443;
server_name nginx.ixmsoft.com;
ssl on;
ssl_certificate
/etc/nginx/ssl/web
.pem;
ssl_certificate_key
/etc/nginx/ssl/server
.key;
access_log logs
/ssl_access
.log;
location / {
root
/usr/share/nginx/html
;
}
}
|
我们保证配置文件没有问题,可以使用以下命令测试
1
|
Nginx -t
|
查看端口信息
接下来我们尝试访问,443可以访问了,而且证书加载都是对的
如果想访问80跳转到443,那么我们需要修改刚才的nginx_ssl.conf文件。
我们需要配置一下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
server {
listen 80;
server_name nginx.ixmsoft.com;
rewrite ^(.*) https:
//
$server_name$1 permanent;
}
server {
listen 443;
server_name nginx.ixmsoft.com;
ssl on;
ssl_certificate
/etc/nginx/ssl/web
.pem;
ssl_certificate_key
/etc/nginx/ssl/server
.key;
access_log logs
/ssl_access
.log;
location / {
root
/usr/share/nginx/html
;
}
}
|
这样重启nginx后,使用80访问后会自动跳转到443端口的https下
本文转自 高文龙 51CTO博客,原文链接:http://blog.51cto.com/gaowenlong/1882407,如需转载请自行联系原作者