搭建https+nginx的服务器,主要是安装ngnix和使用openssl生成自签证书,并在nginx中配置的过程
 
一、安装环境
1.安装opnssl(ssl支持)
2.安装pcre(支持rewrite重定向功能)
3.安装zlib(解压,因为我下载的pcre是zip文件)
4.安装nginx
 
以上软件的安装方法(有的可以通过yum直接安装):
1.直接在网上找下载地址,然后下载到linux服务器下:wget http://xxxx.tar.gz
2.解压下载的安装包:tar -zxf xxx.tar.gz
3.进入解压后的文件夹:cd xxx
4.对将要安装的软件进行配置(配置的--prefix是安装路径):./configure --prefix=/usr/local/xxx
5.对源代码进行编译:make
6.安装:make install
 
说明:ngnix安装时的配置命令为./configure --prefix=/usr/local/nginx-1.5.1 --with-http_ssl_module --with-http_spdy_module --with-http_stub_status_module --with-pcre=/opt/soft/pcre-8.38 --with-openssl=/opt/soft/openssl-1.0.1s
因为ngnix需要后面的依赖,所以后面需要加--with,具体软件后面的是依赖的软件目录
 
安装时遇到的问题如下:
 
1.安装zlib时遇到的问题
1.解压时报错,使用tar -zxvf zlib命令
[root@bjdhj-125-218 zlib-1.2.8]# tar -zxvf zlib
tar (child): zlib: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
解决方法:
用命令 tar -xf filename.tar.gz
 
2.安装nginx时出现的问题:
此时的./configure为./configure --prefix=/usr/local/nginx-1.5.1 --with-http_ssl_module --with-http_spdy_module --with-http_stub_status_module --with-pcre=/usr/local/pcre --with-openssl=/usr/local/ssl
问题一:
cd /usr/local/pcre / 
        && if [ -f Makefile ]; then make distclean; fi / 
        && CC="gcc" CFLAGS="-O2 -fomit-frame-pointer -pipe " / 
        ./configure –disable-shared 
/bin/sh: line 2: ./configure: No such file or directory 
make[1]: *** [/usr/local/pcre/Makefile] Error 127 
make[1]: Leaving directory `/usr/local/src/nginx-0.8.54′ 
make: *** [build] Error 2
解决方法:将--with-pcre=的路径改为下载pcre的源码路径
 
问题二:与问题一类似,改好问题一后才暴漏出来
cd /usr/local/ssl \
        && if [ -f Makefile ]; then make clean; fi \
        && ./config --prefix=/usr/local/ssl/.openssl no-shared  no-threads \
        && make \
        && make install LIBDIR=lib
/bin/sh: line 2: ./config: No such file or directory
make[1]: *** [/usr/local/ssl/.openssl/include/openssl/ssl.h] Error 127
make[1]: Leaving directory `/opt/soft/nginx-1.6.3'
make: *** [build] Error 2
将配置的的--with-openssl路径改为源码的下载路径
 
所以最后的配置如下:
./configure --prefix=/usr/local/nginx-1.5.1 --with-http_ssl_module --with-http_spdy_module --with-http_stub_status_module --with-pcre=/opt/soft/pcre-8.38 --with-openssl=/opt/soft/openssl-1.0.1s
 
 
 
二、生成双向证书
使用openssl生成私有证书,要保证证书中心、服务端、客户端证书中的以下内容相同:
Country Name:CA所在国家名字(CN)
State or Province Name:CA所在省(BJ)
Localty Name:CA所在市区(BJ)
Organization Name:CA的名字
Organizational Unit:CA的部门
Common Name
Email Address
Country Name CN
State or Province Name BJ
Locality Name BJ
Organization Name 58
Organizational Unit Name zhuanzhuan
Common Name qa
Email Address sunmin06@58ganji.com
 
具体步骤如下:
1.编辑证书中心配置文件:vi /etc/pki/tls/openssl.cnf
2.创建证书私钥cakey.pem文件
cd /etc/pki/CA/private
umask 077;openssl genrsa -out cakey.pem 2048
 
3.生成自签证书cacert.pem
cd /etc/pki/CA/
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655
 
4.创建服务器
mkdir /usr/local/nginx/ssl
cd/usr/local/nginx/ssl
umask 007;openssl genrsa -out nginx.key 1024
openssl req -new -key nginx.key -out nginx.csr
opensll ca -in nginx.csr -out nginx.crt -days 3650
说明:
1.nginx.key是生成私钥文件
2.nginx.csr是提取刚生成的私钥文件生成请求证书文件
3.将请求证书提交给证书颁发机构,CA,生成证书文件nginx.crt
 
5.创建客户端浏览器证书
umask 007;openssl genrsa -out client.key 1024
openssl req -new -key client.key -out client.csr
opensll ca -in client.csr -out client.crt -days 3650
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
说明:基本步骤与创建服务关的证书一致,只是最后多了一个将文本格式的证书转换成可以导入浏览器的证书client.p12
 
6.配置nginx的服务器验证
vi  /usr/local/nginx-1.5.1/conf/nginx.conf
ssl on;
ssl_certificate /usr/local/nginx/ssl/nginx.crt;
ssl_certificate_key /usr/local/nginx/ssl/nginx.key;
ssl_client_certificate /usr/local/nginx/ssl/cacert.pem;
ssl_session_timeout 5m;
#ssl_verify_client on; 服务器验证客户端,暂时不开启,让没有证书的客户端可以访问,先完成单向验证
ssl_protocols SSLv2 SSLv3 TLSv1;
说明:更改的是nginx.conf中监听443端口的server{}内容。https的端口默认是443。
 
配置时遇到的问题:
1.生成客户端证书时提示找不到文件:
文件1:
[root@bjdhj-125-218 ssl]# openssl ca -in client.csr -out client.crt -days 3650
Using configuration from /etc/pki/tls/openssl.cnf
/etc/pki/CA/index.txt: No such file or directory
unable to open '/etc/pki/CA/index.txt'
140196223215432:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('/etc/pki/CA/index.txt','r')
140196223215432:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
 
解决方法:
直接手动创建该文件
cd /etc/pki/CA/
touch index.txt
 
文件2:
[root@bjdhj-125-218 ssl]# openssl ca -in client.csr -out client.crt -days 3650
Using configuration from /etc/pki/tls/openssl.cnf
/etc/pki/CA/serial: No such file or directory
error while loading serial number
140284298094408:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('/etc/pki/CA/serial','r')
140284298094408:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
 
解决方法与上面一致。手动创建
touch serial
echo "00" >serial
注意:一定要将00重定向到serial文件,否则会报下面的错误:
[root@bjdhj-125-218 ssl]# openssl ca -in client.csr -out client.crt -days 3650
Using configuration from /etc/pki/tls/openssl.cnf
unable to load number from /etc/pki/CA/serial
error while loading serial number
140584495503176:error:0D066096:asn1 encoding routines:a2i_ASN1_INTEGER:short line:f_int.c:215:
 
感谢这篇文章,让我弄好了!
 
三、实验配置好的nginx
nginx的根目录下主要有以下目录:
conf:配置文件
html:配置文件默认根目录访问的内容(在./conf/nginx.conf中有配置。root  html)
sbin:nginx文件所在地,通过命令./nginx启动nginx,./nginx -s reload重启nginx
 
进入sbin,启动nginx,然后通过浏览器访问https://192.168.125.218来查看页面,看到以下页面即为成功,实际就是./html/index.html文件的内容(ip为nginx安装机器的ip地址)
 
 
 
备注:如果更改了nginx的配置文件。需要重启一下nginx配置才会生效,nginx -s reload

搭建https+nginx服务器的更多相关文章

  1. 搭建https本地服务器:如何得到被所有客户端认可的ssl证书

    https,作为http的加密版,作用还是很大的:能够提升网站搜索权重,让你的网站更安全,而且如果你的网站没有使用https的话,将无法作为移动设备原生应用的api接口.可见掌握为网站启用https的 ...

  2. [python][nginx][https] Nginx 服务器 SSL 证书安装部署

    目录 前言 1 申请证书 2 Nginx 服务器 SSL 证书安装部署 2.1.准备 Nginx 环境 2.2 证书部署 2.3 Nginx 配置 3 最后 参考链接 前言 博主博客中的图片,使用的是 ...

  3. Node.js 搭建 https 协议 服务器

    var https = require('https'); //创建服务器 https var fs = require('fs'); //文件系统的模块 const hostname = '127. ...

  4. Nginx服务器的使用与反向代理负载均衡

    目录 Nginx服务器 一:什么是Nginx? 什么是Nginx - Nginx与其他服努器的性能比较 二:如何在Linux中搭建Nginx服务器? 常见的错误 三:Nginx的反向代理和负载均衡 什 ...

  5. Nginx搭建https服务器

    HTTPS简介 HTTPS(Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单来讲就是HTTP的安全版.即H ...

  6. centos搭建https协议的tomcat和apache服务器以及nginx服务器,mysql php

    Apache HTTP Server(简称 Apache)是 Apache 软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的 Web ...

  7. 利用nginx搭建https服务器

    一.HTTPS简介 HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块.服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加 ...

  8. windows下搭建nginx服务器及实现nginx支持https配置流程

    最近刚接触到了tomcat结合nginx做网站的负载均衡.之前对tomcat搭配nginx实现负载均衡也写过,在上一篇的博客中,最近遇到的问题是要在http的基础上支持https.也就是支持加密的请求 ...

  9. 在阿里云服务器(ECS)上从零开始搭建nginx服务器

    本文介绍了如何在阿里云服务器上从零开始搭建nginx服务器.阿里云服务器(ECS)相信大家都不陌生,感兴趣的同学可以到http://www.aliyun.com/product/ecs去购买,或到体验 ...

随机推荐

  1. openfalcon源码分析之transfer

    本节内容 transfer功能 transfer接收数据来源 transfer数据去向 transfer的一致性hash transfer的一致性hash key的计算 transfer源码分析 2. ...

  2. python中多线程

    多线程 什么是多线程 开启线程的两种方式 进程和线程的区别 Thread对象的其他属性和方法 守护线程 死锁现象与递归锁 信号量.Event定时器 线程Queue 进程池和线程池 什么是多线程 在传统 ...

  3. Julia 语言的一些尝试

    前些天发现了Julia 这门编程语言后便决定对其进行一些尝试,便写了下面的小程序,也算是看看这门语言所谓的速度快到底是怎么快法. 整数累加: x= function fff() : global x ...

  4. error: 'ENOSYS' undeclared (first use in this function)

    /************************************************************************ * error: 'ENOSYS' undeclar ...

  5. 6-20 No Less Than X in BST(20 分)

    You are supposed to output, in decreasing order, all the elements no less than X in a binary search ...

  6. Mac: iTerm2使用

    From: http://www.cnblogs.com/noTice520/p/3190529.html 之前一直有朋友要我分享下在用的mac软件,今天有空就来写一下,可能不止于软件,会有一些配置或 ...

  7. 时间记录 APP:爱今天脑图

    时间记录 APP:爱今天脑图 爱今天 时间记录 以时间记录为主线 晨音 总结 目标 标签 统计 日统计 周统计 月统计 技能培养 一万小时定律 睡眠状态 番茄钟 时间间隔提醒 15 分钟 30 分钟 ...

  8. 【转】MFC String处理

    原文网址:http://www.cnblogs.com/lisuyun/p/3399232.html C/C++获取文件后缀名并且比较 以下这段是VC中过去文件后缀名的方法 1.CString Get ...

  9. 【monkeyrunner】monkeyrunner脚本录制和回放

    脚本录制 1.连接你已经打开调试模式的ANDROID设备或模拟器,输入adb devices 2.运行录制脚本.在cmd窗口输入 monkeyrunner recorder.py #recorder. ...

  10. 写给C#程序员的javascript说明: 各类型变量和prototype

    在javascript中存在类似的私有变量 公有变量和静态变量 私有: var AA=function(){ var aa="im private"; }; 私有变量通过闭包访问. ...