搭建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. 有效二叉查找树判断(java实现)

    leetcode 原题 :(即判断二叉树是否为二叉查找树) Given a binary tree, determine if it is a valid binary search tree (BS ...

  2. Nvidia Driver

    https://www.if-not-true-then-false.com/2015/fedora-nvidia-guide/ https://javacodes.cn/322.html https ...

  3. css中用#id.class的形式定义样式,为什么这样用,不直接写成.class.代码如下:#skin_0.selected{}这种的

    <ul class="skin"> <li id="skin_0" title="蓝色" class="sele ...

  4. python多任务的导包问题

    多线程的使用: import threading def func(x): print(x) t= threading.Thread(target=func,args=(12,)) # 线程启动 t. ...

  5. STL标准库-容器-set与multiset

    技术在于交流.沟通,转载请注明出处并保持作品的完整性. set与multiset关联容器 结构如下 set是一种关联容器,key即value,value即key.它是自动排序,排序特点依据key se ...

  6. 内存泄漏 之 MAT工具的使用

    1 内存泄漏的排查方法 Dalvik Debug Monitor Server (DDMS) 是 ADT插件的一部分,其中有两项功能可用于内存检查 : ·    heap 查看堆的分配情况 ·     ...

  7. C++ wait捕捉的信号处理WIFEXITED/WEXITSTATUS/WIFSIGNALED

    当一个进程正常或异常终止的时候,内核就像其父进程发送SIGCHLD信号,因为子进程是个异步事件,所以这种信号也是内核给那个父进程发的异步通知.父进程可以选择忽略该信号,或者提供一个该信号发生时即被调用 ...

  8. linux 模拟生成 CAN 设备

    /************************************************************************************** * linux 模拟生成 ...

  9. Linux内核静态映射表的建立过程

    /* *    平台:   s5pv210 *    内核版本号: 2.6.35.7 */ kernel/arch/arm/mach-s5pv210/mach-smdkc110.c 这个文件是由三星在 ...

  10. TCP建立连接的三次握手和TCP连接断开的四次挥手

    1. TCP建立连接的3次握手 2. TCP断开连接的四次挥手 [注意]中断连接端可以是Client端,也可以是Server端. 图3—Client端主动发起关闭连接请求 1. 假设Client端主动 ...