nginx配置自签名的ssl证书(轻松实现https连接)

自签名的证书比较适合于加密接口请求的访问,如果是web端https连接的话,最好是用公证机构提供的证书。
另外,自2017年1月1日起,苹果会强制ios应用使用https方式连接

生成自签名证书

脚本具体代码如下(有部分修改):根据需求也可以自行修改脚本代码,比如有效时长等等

#!/bin/sh

# create self-signed server certificate:

read -p "Enter your domain [www.example.com]: " DOMAIN

echo "Create server key..."

openssl genrsa -des3 -out $DOMAIN.key 1024

echo "Create server certificate signing request..."

SUBJECT="/C=US/ST=Mars/L=iTranswarp/O=iTranswarp/OU=iTranswarp/CN=$DOMAIN"

openssl req -new -subj $SUBJECT -key $DOMAIN.key -out $DOMAIN.csr

echo "Remove password..."

mv $DOMAIN.key $DOMAIN.origin.key
openssl rsa -in $DOMAIN.origin.key -out $DOMAIN.key

echo "Sign SSL certificate..."

openssl x509 -req -days 3650 -in $DOMAIN.csr -signkey $DOMAIN.key -out $DOMAIN.crt

echo "TODO:"
echo "Copy $DOMAIN.crt to /etc/nginx/ssl/$DOMAIN.crt"
echo "Copy $DOMAIN.key to /etc/nginx/ssl/$DOMAIN.key"
echo "Add configuration in nginx:"
echo "server {"
echo "    listen 443 ssl"
echo "    ..."
echo "    ssl on;"
echo "    ssl_certificate     /etc/nginx/ssl/$DOMAIN.crt;"
echo "    ssl_certificate_key /etc/nginx/ssl/$DOMAIN.key;"
echo "    ssl_protocols   TLSv1 TLSv1.1 TLSv1.2"
echo "    ssl_ciphers     HIGH:!aNULL:!MD5"
echo "}"

生成证书操作

$ sh ./gencert.sh
# 根据提示输入域名以及四次口令,注意这四次口令输入的都是一样的且同时包含字母和数字

nginx 配置

执行上面的脚本后,会在脚本所在目录生成证书

# 复制证书至/etc/nginx/ssl目录
cp www.test.com.crt  /etc/nginx/ssl/www.test.com.crt
cp www.test.com.key  /etc/nginx/ssl/www.test.com.key


# 修改nginx的server配置
server {
    #监听80端口,强制转到443端口,进行https访问
    listen  80;
    server_name test.cn;

    rewrite ^(.*)$  https://$host$1 permanent;
}
server {
    listen  443 ssl;

    #强制使用https访问
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains;preload" always;

    ...# 此处省略其它配置内容

    ssl on;
    ssl_certificate     /etc/nginx/ssl/www.test.com.crt; #证书格式有多种,常见的有pem、cer等
    ssl_certificate_key /etc/nginx/ssl/www.test.com.key;
    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;
}


# 重启nginx
service nginx restart

最后一定要去阿里云的安全组开放443端口,操作和开放80端口方法是一样的。 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个问题的意思是如何在nginx配置中使用SSL证书实现https访问。要实现https访问,需要在nginx配置文件中添加SSL证书配置SSL相关的参数。可以通过购买商业SSL证书或使用免费的Let's Encrypt证书来获得SSL证书。然后需要将证书和密钥配置nginx配置文件中,并且设置SSL相关参数,如SSL加密算法、证书路径等。配置完成后,可以通过https访问网站。 ### 回答2: Nginx是一个高性能、稳定性好的Web服务器,在使用中配置SSL证书实现HTTPS访问非常方便。配置SSL证书,确保访问安全,具体步骤如下: 1.购买SSL证书 可以从权威CA机构(如阿里云、腾讯云、Symantec、DigiCert等)购买SSL证书,选择适合自己网站的证书类型(如域名验证、组织验证、增强验证等)。购买成功后,下载两个文件:证书文件和密钥文件。 2.创建SSL文件夹 在Nginx安装目录下创建一个ssl文件夹,并将证书文件和密钥文件上传到ssl文件夹中。 3.配置HTTPSnginx.conf配置文件中添加HTTPS的相关代码: ``` server { listen 443 ssl; # 监听443端口,启用ssl server_name www.example.com; # 绑定域名 ssl_certificate /usr/local/nginx/ssl/www.example.com.crt; # SSL证书路径 ssl_certificate_key /usr/local/nginx/ssl/www.example.com.key; # SSL密钥路径 ssl_session_timeout 5m; # SSL会话超时时间 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 使用的SSL/TLS协议 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; # 加密算法 ssl_prefer_server_ciphers on; # 服务器选择加密算法 ... } ``` 以上就是Nginx配置SSL证书实现HTTPS访问的主要内容。需要注意的是,如果启用了https协议,需要将server配置块中的所有http协议都替换为https协议,否则将无法生效。 配置完成后,重启Nginx服务器即可。在浏览器中输入网站域名,如果能正常访问并出现HTTPS安全提示,说明SSL证书已经生效。 最后,需要注意的一点是,在使用SSL证书的过程中,必须保持证书的私钥文件的安全,以保证证书的真实性和安全性。 ### 回答3: 为了实现通过 HTTPS 访问网站并保证安全,在 nginx配置 SSL 证书是非常重要和必需的。SSL(Secure Sockets Layer)是一种加密通讯协议,在互联网上保障数据的安全传输。在 nginx 上进行 SSL 配置可以实现 HTTPS(HTTP over SSL/TLS),并确保通过 HTTPS 访问网站的连接安全的。 以下是在 nginx配置 SSL 证书的步骤: 1. 申请 SSL 证书:从可靠和受信任的 SSL 证书颁发机构获得 SSL 证书,并确保证书所涵盖的域名与您的网站所使用的域名匹配。 2. 配置 SSL 证书:使用 openssl 工具将证书和私钥转换为 nginx 特定的格式。然后在 nginx配置文件中指定证书的路径,并启用 nginxSSL 模块。 3. 配置 HTTPS 路由:在 nginx配置文件中添加 HTTPS 服务器块。在该块中,必须定义域名和 SSL 证书的路径。 4. 重启 nginx 服务:完成 SSL 配置后,应该测试配置是否成功。如果没有错误的话,重新启动 nginx 服务器以使配置生效。 在 nginx 上进行 SSL 配置不仅可以为网站提供更强的安全性,还可以提高搜索引擎的排名。因此,在设置网站时,正确地配置和管理 SSL 证书非常重要。如果您不是很了解 nginx配置方法,建议参考 nginx 的官方文档或咨询专业人士的建议。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值