店铺域名使用自定义ssl
关于域名ssl
独立站的每个店铺,都有一个相应的域名,域名通过https访问,需要有ssl证书,按照fecify的逻辑,通过cloudflare集成来解决多个独立站的ssl证书问题, 但是有的用户的商品可能存在投诉问题,不想使用cf的ssl证书,希望自己来配置自己的ssl证书
这种情况下,该店铺就不要套cf了,域名直接解析到服务器ip,然后在宝塔里面nginx配置ssl证书即可
一:准备工作
1.域名解析到服务器IP(本次演示的域名是:www.fecify.online
)
2.域名申请ssl证书(ngxin),申请通过后,是2个文件,上传到文件路径:/www/server/panel/vhost/cert
- 创建文件夹
/www/server/panel/vhost/cert/www.fecify.online
- 将ssl证书的2个文件进行上传
上传后的文件路径:(下面的两个ssl证书文件,是我在阿里云生成的免费ssl证书)
- ssl_certificate:
/www/server/panel/vhost/cert/www.fecify.online/www.fecify.online.pem
- ssl_certificate_key:
/www/server/panel/vhost/cert/www.fecify.online/www.fecify.online.key
怎么区分那个是ssl_certificate? 以-----BEGIN CERTIFICATE-----
开头的就是ssl_certificate,另外一个就是ssl_certificate_key
需要注意的是:阿里云免费ssl证书,申请www.fecify.online
的ssl证书,自动包含根域名fecify.online
,也就是说这个ssl证书是根域名和www域名公用的。
如果您申请的证书不支持,您需要额外申请一个根域名的ssl证书。
3.进入宝塔,进行配置
3.1点击设置:
3.2点击域名管理,确保要配置的域名,在域名管理里面没有添加
- 如果出现
www.fecify.online
和fecify.online
(如果出现,说明您之前手动添加过),则需要删除掉(本次演示的域名是www.fecify.online
,您需要使用您自己添加的域名,查看您本次设置的域名在这里是否存在,如果存在则删除掉,www域名和根域名都需要删除掉)
3.3点击配置文件:
3.4配置前,先将配置部分,保存到一个txt文件里面,备份一下,出现问题后可以还原
- 一定要备份一下配置文件的内容,否则出现问题无法还原,重要的事情说三遍!!
- 一定要备份一下配置文件的内容,否则出现问题无法还原,重要的事情说三遍!!
- 一定要备份一下配置文件的内容,否则出现问题无法还原,重要的事情说三遍!!
将配置内容的第一个server的内容复制出来,放到notepad等编辑里面打开(如果之前没有配置过,里面只有一个server的配置):
配置内容的第一个server复制到编辑器后,在编辑器里面进行修改:(不要在宝塔的环境里面修改,在本地编辑器修改,更稳稳妥)
- 将
listen 80;
去掉,或者注释掉(注释,就是前面加个#
) - server_name:(大约配置的第5行),是域名部分,改成:
www.fecify.online
- ssl_certificate:ssl证书certificate的文件路径(上面步骤上传的ssl证书文件)
- ssl_certificate_key:ssl证书certificate_key的文件路径(上面步骤上传的ssl证书文件)
- 其他的可以不做改动
ssl证书的两个文件路径一定要写对,如果分不清,可以按照下面的方式,打开这个文件,查看文件内容进行区分
- ssl_certificate: 将其修改ssl证书文件的路径(上面步骤已经进行了上传,如果您分不清2个文件,可以打开文件,如果文件内容开头是
-----BEGIN CERTIFICATE-----
,则对应到这里) - ssl_certificate_key:另外一个文件就是key文件
下面是一个例子:您需要:
- (大约第3行代码)注释掉
listen 80;
(或者删除) - (大约第5行代码)配置www域名
- (大约第11,12行代码)ssl证书文件替换成您自己的文件路径
server
{
# listen 80;
listen 443 ssl http2;
server_name www.fecify.online;
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/www.fecshop.cn/public;
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
ssl_certificate /www/server/panel/vhost/cert/www.fecify.online/www.fecify.online.pem;
ssl_certificate_key /www/server/panel/vhost/cert/www.fecify.online/www.fecify.online.key;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
error_page 497 https://$host$request_uri;
#SSL-END
#引用重定向规则,注释后配置的重定向代理将无效
include /www/server/panel/vhost/nginx/redirect/www.fecshop.cn/*.conf;
#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
#error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END
#PHP-INFO-START PHP引用配置,可以注释或修改
include enable-php-74.conf;
#PHP-INFO-END
#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
include /www/server/panel/vhost/rewrite/www.fecshop.cn.conf;
#REWRITE-END
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
#一键申请SSL证书验证目录相关设置
location ~ \.well-known{
allow all;
}
#禁止在证书验证目录放入敏感文件
if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
return 403;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log /dev/null;
access_log /dev/null;
}
location ~ .*\.(js|css)?$
{
expires 12h;
error_log /dev/null;
access_log /dev/null;
}
access_log /www/wwwlogs/www.fecshop.cn.log;
error_log /www/wwwlogs/www.fecshop.cn.error.log;
}
如果您的代码没有ssl_certificate这个部分的配置,那么您可以手动复制下面的配置代码
- 视频里面对这个部分疏漏了,文档里面进行了补充,您需要复制这个ssl配置的代码到您的编辑器里面(复制的位置,参看下面的截图)
ssl_certificate /www/server/panel/vhost/cert/www.fecify.online/www.fecify.online.pem;
ssl_certificate_key /www/server/panel/vhost/cert/www.fecify.online/www.fecify.online.key;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
error_page 497 https://$host$request_uri;
粘贴到如下图这个位置(在您的编辑器的里面,进行代码复制):
然后在编辑器里面,按照上面的要求,进行配置即可
3.5设置http访问www域名和根域名,301跳转到https
- 访问:
http://fecify.online
,进行301跳转到https://www.fecify.online
- 访问:
http://www.fecify.online
,进行301跳转到https://www.fecify.online
- 您需要将
fecify.online
替换成您自己的域名,ssl证书文件替换成您自己的文件路径
- 您需要将
nginx配置代码如下:
server {
listen 80;
server_name fecify.online www.fecify.online;
# Redirect to https://www.fecify.online
return 301 https://www.fecify.online$request_uri;
}
3.6当https访问根域名,301跳转到www域名
- 访问:
https://fecify.online
,进行301跳转到https://www.fecify.online
- 下面加的ssl证书,是根域名的ssl证书,如果您的根域名和www域名是同样的证书文件,那么可以和上面的配置一致
- 如果您申请的www域名的ssl证书不包含根域名,那么您需要单独申请根域名的ssl证书,并上传根域名的ssl证书,下面的文件路径是根域名的ssl文件路径
- 您需要将
fecify.online
替换成您自己的域名,ssl证书文件替换成您自己的文件路径
nginx配置代码如下:
server {
listen 443 ssl;
server_name fecify.online;
ssl_certificate /www/server/panel/vhost/cert/www.fecify.online/www.fecify.online.pem;
ssl_certificate_key /www/server/panel/vhost/cert/www.fecify.online/www.fecify.online.key;
# Redirect to https://www.fecify.online
return 301 https://www.fecify.online$request_uri;
}
3.7最终配置完成
- 将上面的3部分的nginx配置代码进行合并
- 合并后的代码如下
server
{
# listen 80;
listen 443 ssl http2;
server_name www.fecify.online;
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/www.fecshop.cn/public;
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
ssl_certificate /www/server/panel/vhost/cert/www.fecify.online/www.fecify.online.pem;
ssl_certificate_key /www/server/panel/vhost/cert/www.fecify.online/www.fecify.online.key;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
error_page 497 https://$host$request_uri;
#SSL-END
#引用重定向规则,注释后配置的重定向代理将无效
include /www/server/panel/vhost/nginx/redirect/www.fecshop.cn/*.conf;
#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
#error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END
#PHP-INFO-START PHP引用配置,可以注释或修改
include enable-php-74.conf;
#PHP-INFO-END
#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
include /www/server/panel/vhost/rewrite/www.fecshop.cn.conf;
#REWRITE-END
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
#一键申请SSL证书验证目录相关设置
location ~ \.well-known{
allow all;
}
#禁止在证书验证目录放入敏感文件
if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
return 403;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log /dev/null;
access_log /dev/null;
}
location ~ .*\.(js|css)?$
{
expires 12h;
error_log /dev/null;
access_log /dev/null;
}
access_log /www/wwwlogs/www.fecshop.cn.log;
error_log /www/wwwlogs/www.fecshop.cn.error.log;
}
# root domain, www domain: http 301 redirect to https
server {
listen 80;
server_name fecify.online www.fecify.online;
# Redirect to https://www.fecify.online
return 301 https://www.fecify.online$request_uri;
}
# root domain: https 301 redirect www domain
server {
listen 443 ssl;
server_name fecify.online;
# use root domain ssl file
ssl_certificate /www/server/panel/vhost/cert/www.fecify.online/www.fecify.online.pem;
ssl_certificate_key /www/server/panel/vhost/cert/www.fecify.online/www.fecify.online.key;
# Redirect to https://www.fecify.online
return 301 https://www.fecify.online$request_uri;
}
3.8将这个代码内容,进行复制,追加到配置文件的底部:
- 注意,是将上面的配置代码追加到底部,而不是覆盖,重要的事情说三遍!!!
- 注意,是将上面的配置代码追加到底部,而不是覆盖,重要的事情说三遍!!!
- 注意,是将上面的配置代码追加到底部,而不是覆盖,重要的事情说三遍!!!
进行保存即可(如果您的ssl证书路径写错了,保存将会报错)
4.fecify服务端后台,创建一个店铺,域名解析通过后,设置店铺的域名
创建店铺后,点击详情按钮
设置店铺域名,保存
5.访问https://www.fecify.online
,测试是否可以访问
另外需要测试根域名的301跳转,是否跳转到www域名
http://fecify.online
http://www.fecify.online
https://fecify.online
如果上面的几个域名访问都跳转到了 https://www.fecify.online
, 则说明配置正确