HTTP协议以明文方式发送内容,不提供任何方式的数据加密。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
申请SSL证书
这边我在腾讯云申请了免费证书,有效期一年。这里需要注意下,这亚洲诚信机构颁发的免费证书只能一个域名使用,子域名那些需要另外申请。
然后填写完相关信息后,点击下一步即可申请。
差不多一个小时内就会审核通过。
通过后,在证书列表里,下载你申请的证书。
下载解压后,里面会有多个文件夹。接下来我们只需要用到Nginx文件夹里的内容。
安装Nignx
因为我配置过程中出现了Nignx缺失模块的情况,所以需要重新下载安装包覆盖一下。这里就简单讲一下Nignx的安装和覆盖的方法。
首先需要先安装一下 openssl
。
yum -y install openssl openssl-devel
安装成功后,下载Nignx安装包进行解压安装。
# 下载Nginx
cd /usr/local/src/
wget http://nginx.org/download/nginx-1.6.2.tar.gz
# 解压
tar zxvf nginx-1.6.2.tar.gz
# 进入安装包目录
cd nginx-1.6.2
# 编译安装
./configure
./configure --with-http_ssl_module
make
如果你还没安装过Nignx的话,你再执行下列命令就完成安装。
make install
如果你安装过只想覆盖的话,你首先需要先把原来的Nignx备份一下。
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
然后将新的Nignx覆盖旧安装目录。
cp objs/nginx /usr/local/nginx/sbin/nginx
如果报错的话,就执行下列语句。
cp -rfp objs/nginx /usr/local/nginx/sbin/nginx
安装或覆盖成功后,可通过下列命令测试一下Nignx
/usr/local/nginx/sbin/nginx -t
如果成功的话就返回:
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
配置Nignx
首先将我们下载的证书中Nginx文件夹中两个文件放置到Nignx配置文件同路径下。默认安装的话Nignx配置文件路径是 /usr/local/nginx/conf
,你可以可通过下列命令查找安装路径。
whereis nginx
我是用FileZilla进行传输文件。
紧接着,我们需要通过编辑nginx.conf来配置Nginx,你可以使用FileZilla拷贝一份到电脑本地,用编辑器编辑后再去覆盖,也可以输入下列命令进行编辑。
vim /usr/local/nginx/conf/nginx.conf
下面是我的配置文件,都加上对应的注释了。
在 server_name
换成你的域名,然后 ssl_certificate
和 ssl_certificate_key
换成你刚刚拷贝进来的证书名。
#user nobody;
#Nginx进程,一般设置为和CPU核数一样
worker_processes 1;
#错误日志存放目录
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#进程pid存放位置
#pid logs/nginx.pid;
events {
# 单个后台进程的最大并发数
worker_connections 1024;
}
http {
#文件扩展名与类型映射表
include mime.types;
#默认文件类型
default_type application/octet-stream;
#设置日志模式
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#nginx访问日志存放位置
#access_log logs/access.log main;
#开启高效传输模式
sendfile on;
#减少网络报文段的数量
#tcp_nopush on;
#保持连接的时间,也叫超时时间
keepalive_timeout 65;
#开启gzip压缩
#gzip on;
#侦听443端口,这个是ssl访问端口
server {
listen 443;
server_name ouduidui.cn;
#定义服务器的默认网站根目录位置
root html;
#设定本虚拟主机的访问日志
#access_log logs/nginx.access.log main;
# 这些都是腾讯云推荐的配置,直接拿来用就行了,只是修改证书的路径,注意这些路径是相对于/usr/local/nginx/conf/nginx.conf文件位置
ssl on;
ssl_certificate 1_ouduidui.cn_bundle.crt;
ssl_certificate_key 2_ouduidui.cn.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
location / {
root html;
#定义首页索引文件的名称
index index.html index.htm;
}
}
server{
# 80端口是http正常访问的接口
listen 80;
server_name ouduidui.cn;
# 在这里,我做了https全加密处理,在访问http的时候自动跳转到https
rewrite ^(.*) https://$host$1 permanent;
}
}
配置完后,测试一下Nginx。
/usr/local/nginx/sbin/nginx -t
成功后,就重启一下Nignx。
这里需要注意下,导入新的证书后需要重启而不是重载, nginx -s reload
是普通修改配置重载。
# 停止nginx
nginx -s stop
# 启动
nginx