Nginx ssl

安装nginx

1.更新库,已更新忽略:yum update

2.安装前置库:yum install -y gcc pcre pcre-devel openssl openssl-devel gd gd-devel

3.下载nginx安装包:

  1. cd /data           
  2. wget http://nginx.org/download/nginx-1.9.9.tar.gz

4.解压:tar -zxvf nginx-1.9.9.tar.gz

5,编译:

  1. cd nginx-1.9.9
  2. ./configure --prefix=/usr/local/nginx --with-http_ssl_module
  3. make (使用 make 命令编译(使用make install会重新安装nginx),此时当前目录会出现 objs 文件夹)
  • 重新安装(可选一):make install

新增ssl模块(可选二):

用新的 nginx 文件覆盖当前的 nginx 文件
cp ./objs/nginx /usr/local/nginx/sbin/

6.查看nginx版本:/usr/local/nginx/sbin/nginx -V

  • configure arguments: –with-http_ssl_module说明ssl模块已安装

证书部署

下载申请好的 ssl 证书文件压缩包到本地并解压(这里是用的 pem 与 key 文件,文件名可以更改)。

在 nginx 目录新建 cert 文件夹存放证书文件。

$ cd /usr/local/nginx
$ mkdir cert

将这两个文件上传至服务器的 cert 目录里。
这里使用 mac 终端上传至服务器的 scp 命令(这里需要新开一个终端,不要使用连接服务器的窗口):

$ scp /Users/yourname/Downloads/ssl.pem root@xxx.xx.xxx.xx:/usr/local/nginx/cert/
$ scp /Users/yourname/Downloads/ssl.key root@xxx.xx.xxx.xx:/usr/local/nginx/cert/

scp [本地文件路径,可以直接拖文件至终端里面] [<服务器登录名>@<服务器IP地址>:<服务器上的路径>]

三、Nginx.conf 配置

编辑 /usr/local/nginx/conf/nginx.conf 配置文件:

配置 https server。去掉注释https server:

server {
    # 服务器端口使用443,开启ssl, 这里ssl就是上面安装的ssl模块
    listen       443 ssl;
    # 域名,多个以空格分开
    server_name www.baidu.com www.taobao.com;
    
    # ssl证书地址
    ssl_certificate     /usr/local/nginx/cert/ssl.pem;  # pem文件的路径
    ssl_certificate_key  /usr/local/nginx/cert/ssl.key; # key文件的路径
    
    # ssl验证相关配置
    ssl_session_timeout  5m;    #缓存有效期
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;    #加密算法
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    #安全链接可选的加密协议
    ssl_prefer_server_ciphers on;   #使用服务器端的首选算法

    location / {
        root   html;
        index  index.html index.htm;
    }
}

将 http 重定向 https。

server {
    listen       80;
    server_name www.baidu.com www.taobao.com;
    return 301 https://$server_name$request_uri;
}

      

 

<think>嗯,用户想了解如何在Nginx配置SSL证书以及常见问题的解决方法。首先,我需要回忆一下Nginx配置SSL的基本步骤。根据之前的引用内容,安装依赖、生成私钥和CSR、获取证书、配置Nginx,然后测试和重启服务。这些步骤应该覆盖主要流程。 然后,常见问题可能包括证书路径错误、权限问题、协议版本过时、证书不匹配或者端口未开放。比如用户可能会遇到403错误,这时候需要检查证书文件的权限是否正确。还有可能配置语法错误,导致Nginx无法启动,这时候需要用nginx -t来测试配置。 另外,用户可能不知道如何生成自签名证书,或者申请CA证书的具体步骤。需要分点说明,生成私钥和CSR的命令,以及如何从CA获取证书。同时,强调配置文件中server块的设置,比如监听443端口、ssl_certificate和ssl_certificate_key的路径是否正确。 还要注意是否需要强制HTTPS跳转,这可以通过在80端口的server块中添加rewrite指令。另外,可能提到一些安全增强配置,比如启用HSTS、选择强密码套件等,但根据引用内容,可能暂时不需要深入,除非用户提到相关问题。 可能用户遇到的另一个问题是浏览器提示证书不受信任,这可能是因为自签名证书未被CA机构认可,所以建议使用受信任的CA颁发的证书。或者证书链不完整,需要配置中间证书。 测试部分,需要指导用户如何用curl或者openssl s_client检查SSL连接是否成功。还有检查防火墙是否开放了443端口,这个也是常见的问题。 最后,确保回答结构清晰,步骤明确,每个部分都分点说明,并引用提供的参考资料中的步骤,比如引用[1]提到的安装依赖,引用[3]中的生成密钥和CSR的过程,引用[2]的备份Nginx执行文件。同时,相关问题部分要引导用户进一步探索优化配置、证书续期等高级话题。</think>### 如何在Nginx配置SSL证书及常见问题解决 #### **一、配置SSL证书步骤** 1. **安装Nginx依赖** 确保系统已安装Nginx所需依赖包(如`gcc`、`openssl`、`pcre`等)[^1]: ```bash yum install -y gcc-c++ zlib zlib-devel openssl openssl-devel pcre pcre-devel ``` 2. **生成私钥与证书签名请求(CSR)** 使用OpenSSL生成私钥(`private.key`)和CSR文件(`domain.csr`)[^3]: ```bash openssl req -newkey rsa:2048 -nodes -keyout private.key -out domain.csr ``` 根据提示填写域名、组织信息等。 3. **获取SSL证书** - **自签名证书**(仅测试用): ```bash openssl x509 -req -days 365 -in domain.csr -signkey private.key -out domain.crt ``` - **CA颁发证书**:将CSR提交至证书颁发机构(如Let’s Encrypt),获取签发的证书文件(如`domain.crt`)。 4. **配置Nginx** 编辑Nginx配置文件(如`/etc/nginx/nginx.conf`或站点配置文件): ```nginx server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/domain.crt; # 证书路径 ssl_certificate_key /path/to/private.key; # 私钥路径 ssl_protocols TLSv1.2 TLSv1.3; # 推荐协议版本 ssl_ciphers HIGH:!aNULL:!MD5; # 加密套件配置 # 其他配置(如静态资源路径、反向代理等) } ``` 配置后需备份原Nginx执行文件并重新加载配置[^2]: ```bash nginx -t # 测试配置语法 systemctl reload nginx ``` 5. **强制HTTPS跳转(可选)** 在80端口的server块中添加跳转规则: ```nginx server { listen 80; server_name example.com; return 301 https://$host$request_uri; } ``` --- #### **二、常见问题及解决方法** 1. **证书路径错误** - **现象**:Nginx启动失败,日志提示`SSL: cannot load certificate`。 - **解决**:检查`ssl_certificate`和`ssl_certificate_key`路径是否正确,确保文件权限为可读(如`chmod 644 *.crt`)。 2. **SSL协议版本不兼容** - **现象**:浏览器提示“不安全的连接”。 - **解决**:禁用旧协议(如TLSv1.0),仅保留`TLSv1.2`及以上版本[^3]。 3. **证书与域名不匹配** - **现象**:浏览器警告“证书无效”。 - **解决**:确保证书中`Common Name`或`Subject Alternative Name`与域名一致。 4. **443端口未开放** - **现象**:无法通过HTTPS访问。 - **解决**:检查防火墙规则,开放443端口: ```bash firewall-cmd --add-port=443/tcp --permanent firewall-cmd --reload ``` 5. **混合HTTP/HTTPS内容** - **现象**:页面部分资源加载失败。 - **解决**:确保所有静态资源(如图片、JS)使用相对路径或`https://`协议。 --- #### **三、测试与验证** - **命令行验证**: ```bash curl -I https://example.com # 检查响应状态码 openssl s_client -connect example.com:443 # 查看证书详细信息 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值