众所周知,我们在互联网上冲浪,一般都是使用的http协议(超文本传输协议),默认情况下数据是明文传送的,这些数据在传输过程中都可能会被捕获和窃听,因此是不安全的。https可以说是http协议的安全版,就是为了满足对安全性要求比较高的用户而设计的。如果您的邮件中有敏感数据,不希望被人窃听;如果您不希望被钓鱼网站盗用帐号信息,如果您希望您在使用邮箱的过程中更安全,那么我们推荐您使用https安全连接。
现在是我们要做一个网站www2.rsyslor.org 要求通过https://www2.rsyslog.org进行访问.
www2.rsyslog.org 192.168.100.107
DNS 192.168.100.102
实验步骤
第一步、首先生成一对证书。
你需要使用到openssl命令,所以请确认系统已经安装过此包
RHEL6中在/etc/pki/tls/certs 目录有个脚本可以帮助我们简化证书生成的过程,所以
我们首先切换到此目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
[root
@rhel6u3
-
7
~]# cd /etc/pki/tls/certs/
[root
@rhel6u3
-
7
certs]# make server.key
//生成私钥
umask
77
;
/usr/bin/openssl genrsa -aes128
2048
> server.key
Generating RSA
private
key,
2048
bit
long
modulus
..........+++
.....................................+++
e is
65537
(
0x10001
)
Enter pass phrase:
Verifying - Enter pass phrase:
[root
@rhel6u3
-
7
certs]# openssl rsa -in server.key -out server.key
//除去密码以便询问时不需要密码
Enter pass phrase
for
server.key:
writing RSA key
[root
@rhel6u3
-
7
certs]# make server.csr
//生成证书颁发机构,用于颁发公钥
umask
77
;
/usr/bin/openssl req -utf8 -
new
-key server.key -out server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a
default
value,
If you enter
'.'
, the field will be left blank.
-----
Country Name (
2
letter code) [XX]:cn
State or Province Name (full name) []:sh
Locality Name (eg, city) [Default City]:sh
Organization Name (eg, company) [Default Company Ltd]:rsyslog
Organizational Unit Name (eg, section) []:rsyslog
Common Name (eg, your name or your server's hostname) []:xiaonuo
Email Address []:unix.root
@hotmail
.com
Please enter the following
'extra'
attributes
to be sent with your certificate request
A challenge password []:
123
.com
An optional company name []:it
[root
@rhel6u3
-
7
certs]# openssl x509 -in server.csr -req -signkey server.key -days
365
-out server.crt
//颁发公钥,不过由于我们并不是去CA证书中心申请的公钥,所以在使用的时候,客户端浏览器会跳出未受信任的警告。如果你在生产环境下,请去CA申请。
Signature ok
subject=/C=cn/ST=sh/L=sh/O=rsyslog/OU=rsyslog/CN=xiaonuo/emailAddress=unix.root
@hotmail
.com
Getting Private key
[root
@rhel6u3
-
7
certs]#
|
第二步、编辑nginx主配置文件,添加ssl模块参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[root
@rhel6u3
-
7
certs]# vim /usr/local/nginx/conf/nginx.conf
include /usr/local/nginx/server/www2.rsyslog.org;
//将虚拟主机单独设置,然后用include包含到主配置文件中,简化主配置文件的配置
[root
@rhel6u3
-
7
certs]# vim /usr/local/nginx/server/www2.rsyslog.org
//注意以下配置可以在主配置文件中复制ssl模块信息
server {
listen
443
; 监听端口为
443
server_name www2.rsyslog.org;
ssl on;
//开启ssl
ssl_certificate /etc/pki/tls/certs/server.crt;
//证书位置
ssl_certificate_key /etc/pki/tls/certs/server.key;
//私钥位置
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
//指定密码为openssl支持的格式
ssl_ciphers HIGH:!aNULL:!MD5;
//密码加密方式
ssl_prefer_server_ciphers on;
//依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码
location / {
root sites/www2;
//www2.rsyslog.org根目录的相对位置
index index.html index.htm;
}
}
|
第三步、创建网站的目录、主页、权限。
1
2
3
4
5
6
7
|
[root
@rhel6u3
-
7
~]# cd /usr/local/nginx/sites/
[root
@rhel6u3
-
7
sites]# mkdir www2
//创建网站根目录
[root
@rhel6u3
-
7
sites]# echo This is https:
//www2.rsyslog.org >www2/index.html //写个主测试页面
[root
@rhel6u3
-
7
server]# chown nginx. /usr/local/nginx/server/ -R
//设置配置文件的属主和属组为nginx
[root
@rhel6u3
-
7
server]# chmod
600
/usr/local/nginx/server/ -R
//设置配置文件的权限为600
[root
@rhel6u3
-
7
server]# chown nginx. /usr/local/nginx/sites/www2 –R
//设置网站根目录的属主和属组为nginx
[root
@rhel6u3
-
7
server]# chmod
755
/usr/local/nginx/sites/www2 –R
//设置网站根目录权限为755,其他人可以读取网站信息。
|
第四步、在DNS区域中添加主机A记录,有关DNS配置请参看http://dreamfire.blog.51cto.com/418026/1091943
www2 A 192.168.100.107
第五步、启动nginx服务器。
1
2
3
4
|
[root
@rhel6u3
-
7
certs]# /etc/rc.d/init.d/nginx reload
//平滑重启nginx保证网站不被中断
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
Reloading nginx: [ OK ]
|
第六步、测试网站是否能够通过https访问
将PC机网卡的DNS更改为192.168.100.102
在IE浏览器中输入https://www2.rsyslog.org 进行测试。提示安全证书不受信任,是因为证书是本机模拟的。点击“仍然继续”即可。
本文出自 “小诺的Linux开源技术博客” 博客,请务必保留此出处http://dreamfire.blog.51cto.com/418026/1141302