您的位置:首页 > 理论基础 > 计算机网络

HTTPS 证书申请及配置

2016-12-29 10:41 295 查看


证书采用的是 Let's
Encrypt 颁发的免费, 高效, 跨平台证书. 关于 
Let's Encrypt
 的前世今生, 请自行Google.


申请及配置步骤


1. 安装 acme.sh

方法一:
curl https://get.acme.sh | sh


方法二:
# acme.sh 作者推荐的安装方式可能会出现资源访问不了的情况
# 可以尝试通过 先下载 在安装的方法,  如下:
wget https://github.com/Neilpang/acme.sh/archive/master.zip unzip master.zip
mv acme.sh-master acme.sh
cd acme.sh
./acme.sh/acme.sh --install


2. 创建用于存放验证文件的文件夹, 如: /var/www/acme-challenges/

mkdir -p /var/www/acme-challenges


3. 配置 Nginx 验证

server {
listen 80;
server_name *.beinhere.com beinhere.com *.luodi.cc luodi.cc *.lyfeyaj.com lyfeyaj.com;

# 用于验证服务, acme 会自动将认证token 放在此文件夹下面, 并通过web请求来验证
location ^~ /.well-known/acme-challenge/ {
alias /var/www/acme-challenges/.well-known/acme-challenge/;
try_files $uri =404;
}

## Don't show the nginx version number, a security best practice
server_tokens off;

# 用于跳转 http 为 https
location / {
return 301 https://$http_host$request_uri; }
}


这里需要注意, 如果 80 端口的域名配置 和其他的有冲突, 则需要先关掉, 或者将上述的配置添加到置顶域名里面


4. 生成域名证书

acme.sh --issue -d luodi.cc -d www.luodi.cc --webroot /var/www/acme-challenges/


如果有多个子域名, 可以通过添加 
-d 子域名.com
 来增加 如果生成失败, 可以通过 添加 
--debug
 或者 
--log
 参数来查看详细调试信息


5. 安装域名证书

acme.sh --installcert  -d luodi.cc --keypath   /etc/nginx/ssl/luodi.cc.key --fullchainpath /etc/nginx/ssl/luodi.cc.cer --reloadcmd  "service nginx force-reload"


6. 配置 Nginx

将监听端口改为 443
listen 443 ssl;


增加以下配置
## Strong SSL Security
## https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html & https://cipherli.st/ ssl on;
ssl_certificate /etc/nginx/ssl/luodi.cc.cer;
ssl_certificate_key /etc/nginx/ssl/luodi.cc.key;

# Luodi needs backwards compatible ciphers to retain compatibility with Java IDEs
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;

# 根证书 + 中间证书
ssl_trusted_certificate    /etc/nginx/ssl/letsencrypt.cer;

ssl_stapling               on;
ssl_stapling_verify        on;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  HTTPS