使用nginx搭建https服务器

自签名SSL证书与Nginx配置
本文介绍如何使用openssl生成自签名SSL证书,并详细配置Nginx以支持HTTPS,确保内部通信的安全性。

http://www.cnblogs.com/tintin1926/archive/2012/07/12/2587311.html


最近在研究nginx,整好遇到一个需求就是希望服务器与客户端之间传输内容是加密的,防止中间监听泄露信息,但是去证书服务商那边申请证书又不合算,因为访问服务器的都是内部人士,所以自己给自己颁发证书,忽略掉浏览器的不信任警报即可。下面是颁发证书和配置过程。

首先确保机器上安装了openssl和openssl-devel

#yum install openssl
#yum install openssl-devel

然后就是自己颁发证书给自己

#cd /usr/local/nginx/conf
#openssl genrsa -des3 -out server.key 1024
#openssl req -new -key server.key -out server.csr
#openssl rsa -in server.key -out server_nopwd.key
#openssl x509 -req -days 365 -in server.csr -signkey server_nopwd.key -out server.crt

至此证书已经生成完毕,下面就是配置nginx

server {
    listen 443;
    ssl on;
    ssl_certificate  /usr/local/nginx/conf/server.crt;
    ssl_certificate_key  /usr/local/nginx/conf/server_nopwd.key;
}

然后重启nginx即可。

ps: 如果出现“[emerg] 10464#0: unknown directive "ssl" in /usr/local/nginx-0.6.32/conf/nginx.conf:74”则说明没有将ssl模块编译进nginx,在configure的时候加上“--with-http_ssl_module”即可^^

至此已经完成了https服务器搭建,但如何让浏览器信任自己颁发的证书呢?

今天终于研究捣鼓出来了,只要将之前生成的server.crt文件导入到系统的证书管理器就行了,具体方法:

控制面板 -> Internet选项 -> 内容 -> 发行者 -> 受信任的根证书颁发机构 -> 导入 -》选择server.crt


转载于:https://www.cnblogs.com/dingxiaoyue/p/4926846.html

<think>好的,用户想搭建HTTPS服务器使用Nginx和OpenSSL生成密钥和证书,并配置nginx.conf的SSL设置。我需要根据提供的引用资料和之前的经验来整理步骤。 首先,生成密钥和证书。OpenSSL通常用于生成自签名证书,虽然自签名证书不被浏览器信任,但适合测试环境。用户可能需要先生成私钥和证书请求(CSR),然后自签名。不过引用中提到的例子好像直接生成crt和key,比如引用1中的server.crt和server.key,以及引用2中的server.pem和server.key。可能用户需要生成RSA密钥对,然后创建自签名证书。命令可能包括openssl req和openssl x509,但需要确认正确的参数,比如-newkey rsa:2048,-nodes,-keyout,-out,-days等。注意自签名证书需要-subj选项来指定主题,避免交互式输入。 接下来是配置Nginx。用户需要编辑nginx.conf,在server块中设置监听443端口,ssl_certificate和ssl_certificate_key指向生成的证书和密钥路径。引用1和引用2中的配置示例显示,server块里必须包含listen 443 ssl,然后指定证书和key的路径。此外,可能还需要配置SSL协议版本、加密套件,如ssl_protocols和ssl_ciphers,引用2中有相关例子,可能需要建议用户使用更安全的配置,比如TLS 1.2以上,禁用不安全的加密套件。同时,可能需要配置其他SSL参数,如ssl_session_timeout和ssl_prefer_server_ciphers on。 另外,用户可能需要设置静态资源路径或反向代理,如引用1中的alias html/和autoindex on;,或者引用2中的proxy_pass。这部分需要根据用户的实际需求来调整,但用户当前问题可能主要集中在SSL配置,所以这部分可以简要提及。 还需要注意权限问题,确保Nginx有权限读取证书和密钥文件。如果用户在Linux系统下,可能需要调整文件权限,比如chmod 600 server.key。 测试配置是否正确,使用nginx -t检查语法,然后重启Nginx服务。最后验证HTTPS是否生效,可以通过curl -k或浏览器访问,虽然自签名证书会有警告,但连接应成功。 可能遇到的问题包括:证书路径错误,权限问题,端口443未开放,Nginx未编译SSL模块等。需要提醒用户检查这些点。 总结步骤应该是:生成证书和密钥 → 配置Nginx SSL → 检查配置 → 重启服务 → 测试访问。需要确保每个步骤的命令和配置示例准确,特别是路径部分要用户根据实际情况修改。同时,注意中文回答,使用正确的LaTeX格式,但问题中可能数学公式不多,主要是在代码块和路径说明中注意格式。</think>### 分步指南:使用Nginx和OpenSSL搭建HTTPS服务器 #### 一、生成密钥和证书文件 1. **创建私钥和自签名证书** 通过OpenSSL生成RSA私钥和自签名证书(测试用途): ```bash openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout server.key -out server.crt \ -subj "/C=CN/ST=Beijing/L=Beijing/O=Dev/CN=localhost" ``` - `-nodes`:私钥不加密,避免Nginx启动时需要输入密码 - `-subj`:指定证书主题信息,可自定义国家(C)、省份(ST)、组织(O)等[^1] 2. **验证生成文件** 检查当前目录下是否生成 `server.key`(私钥)和 `server.crt`(证书)文件。 #### 二、配置Nginx的SSL设置 1. **编辑nginx.conf文件** 在Nginx配置文件中添加以下内容: ```nginx server { listen 443 ssl; server_name localhost; # 域名或IP ssl_certificate /path/to/server.crt; # 证书绝对路径 ssl_certificate_key /path/to/server.key; # 私钥绝对路径 # 增强SSL安全性 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256; ssl_prefer_server_ciphers on; location / { root html; index index.html; autoindex on; # 开启目录列表(可选) } } ``` 2. **强制HTTP跳转HTTPS(可选)** 添加HTTP到HTTPS的重定向: ```nginx server { listen 80; server_name localhost; return 301 https://$server_name$request_uri; } ``` #### 三、验证与重启服务 1. **检查配置文件语法** ```bash nginx -t ``` 输出应为 `syntax is ok` 和 `test is successful`。 2. **重启Nginx服务** ```bash nginx -s reload ``` 3. **测试HTTPS访问** 使用浏览器访问 `https://localhost`,忽略证书警告后应显示Nginx默认页面。 #### 四、常见问题处理 - **权限问题**:确保Nginx进程有权限读取 `server.key` 和 `server.crt` 文件(建议设置 `chmod 400 server.key`)。 - **端口冲突**:检查443端口是否被占用(`netstat -tuln | grep 443`)。 - **证书路径错误**:使用绝对路径而非相对路径[^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值