实验简述
使用docker的centos镜像,在里面安装nginx,然后拿自生成的签名,配置nginx证书,最后通过https访问服务器
docker版本:Docker version 18.09.2, build 6247962
centos 镜像: docker search 里面检索出来拿最新的就可以了
nginx版本:nginx-1.15.9
pcre版本:pcre-8.42
ssl证书:自签名获取
自签名SSL证书
# 1.生成私钥
$ openssl genrsa -out server.key 2048
# 2.生成 CSR (Certificate Signing Request)
$ openssl req -subj "/C=CN/ST=Tianjin/L=Tianjin/O=Mocha/OU=Mocha Software/CN=test1.sslpoc.com/emailAddress=test@mochasoft.com.cn" -new -key server.key -out server.csr
# 3.生成自签名证书
$ openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
参考博文:如何创建自签名SSL证书
启动centos镜像
# 1、查找centos镜像
docker search centos
# 2、拉取centos镜像
docker pull centos:latest
# 3、启动镜像,并暴露80和443端口
docker run -d -t -p80:80 -p443:443 centos
# 4、进入容器
docker exec -it <CONTAINER ID> bash
启动效果:
安装基础软件
# 1、安装ssl模块
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
# 2、安装wget
yum -y install wget
安装pcre
#下载最新版本的,注意不要用pcre2
wget https://jaist.dl.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.tar.gz
tar -xvf pcre-8.42.tar.gz
cd pcre-8.42
#安装编译
./configure
make && make install
#查看pcre版本
pcre-config --version
安装nginx
#下载
wget https://nginx.org/download/nginx-1.15.9.tar.gz
tar -xvf nginx-1.15.9.tar.gz
cd nginx-1.15.9
#编译安装
./configure --prefix=/usr/local/nginx-1.15.9 --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/pcre-8.42
make && make install
#查看版本
/usr/local/nginx/sbin/nginx -v
启动nginx
# 1、创建目录和日志文件
mkdir /usr/local/nginx-1.15.9/logs/
touch error.log
touch access.log
# 2、启动nginx
/usr/local/nginx-1.15.9/sbin/nginx -c /usr/local/nginx-1.15.9/conf/nginx.conf
# 3、测试启动结果
curl http://localhost
配置ssl证书到nginx
将第一步骤证书文件cp到docker容器里面
docker cp server.crt <CONTAINER ID>:/usr/local/nginx-1.15.9/conf/
docker cp server.key <CONTAINER ID>:/usr/local/nginx-1.15.9/conf/
修改nginx.conf,往http的对象里添加证书配置,cd如下
server {
listen 443 ssl;
server_name localhost;
ssl_certificate server.crt;
ssl_certificate_key server.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
参考:Nginx配置SSL证书
重新启动nginx,显示,说明https已经配置成功
# 删除sbin下面的nginx
rm -rf ./sbin/nginx
#将obj下面的nginx复制到shin
cp ./objs/nginx ./sbin/
启动 nginx -c nginx.conf
重启nginx -s reload
参考文章:centos7下安装nginx