oneinstack如何安装ssl证书和配置Let's Encrypt免费SSL证书教程汇总(转)

OneinStack包含以下组合:
lnmp(Linux + Nginx+ MySQL+ PHP)

LNMP安装SSL安全证书 部署HTTPS:https://www.gworg.com/ssl/309.html
lamp(Linux + Apache+ MySQL+ PHP)

APACHE安装SSL证书:https://www.gworg.com/ssl/106.html
Apache自动跳转到 HTTPS:https://www.gworg.com/ssl/130.html
lnmpa(Linux + Nginx+ MySQL+ PHP+ Apache):Nginx处理静态,Apache(mod_php)处理动态PHP

Nginx安装SSL证书:https://www.gworg.com/ssl/107.html
Nginx 自动跳转到HTTPS:https://www.gworg.com/ssl/167.html
lnmt(Linux + Nginx+ MySQL+ Tomcat):Nginx处理静态,Tomcat(JDK)处理JAVA
lnmh(Linux + Nginx+ MySQL+ HHVM)



LNMP安装SSL安全证书 部署HTTPS

 

第一步、部署HTTPS基础工作准备
选用正规的SSL域名证书

 

第二步、上传和部署SSL证书

A - 把上面的一个CRT一个KEY文件上传到VPS ROOT目录中,然后对应修改成SSL.CRT和SSL.KEY文件名,或者我们用作其他命令都可以。

B - 解密私钥和设置权限

openssl rsa -in ssl.key -out /root/ssl.key
chmod 600 /root/ssl.key

登录SSH,执行上述两行脚本,解密私钥和授权。

第三步、在LNMP环境部署站点SSL设置

我们需要在已有的LNMP添加了站点,然后在站点对应的CONF文件设置。

在"/usr/local/nginx/conf/vhost/"目录文件中,找到对应站点的conf文件,然后修改设置如下

server
{
listen 80;
 listen 443 ssl;
#listen [::]:80;
ssl on;
        ssl_certificate /root/ssl.crt;
        ssl_certificate_key /root/ssl.key;
server_name gworg.com www.gworg.com;

上面的红色标注部分是我添加的,对应路径我们要与之前上传的CRT和KEY文件路径对应以及文件名不要搞错。

最后,我们重启LNMP,可以看到SSL证书生效,且HTTPS可以访问站点。


 

 

APACHE安装SSL证书

 
 

SSL从购买到安装分为一下步骤:

  1. 提交CSR  & 使用自动生成CSR

  2. 验证域名所有权

  3. 签发证书

  4. 下载服务器证书

在我们网站购买的客户,下载Apache格式的证书

解压后应包含三个文件:

yourdomain.com.crt     (服务器证书)
yourdomain.com.key   (私钥文件)如果为空请将生成CSR时保存的私钥内容粘贴在文件中
yourdomain.com.ca-bundle  (根证书链)

下面介绍如何安装Apache. 首要条件就是 apache 已经安装了 mod_ssl.so 模块 。

检测方法使用以下命令:

httpd -M | grep mod_ssl

如果有显示 mod_ssl.so 表示已经安装了apache模块。

CentOS/Redhat安装mod_ssl.so

yum install mod_ssl

Debian/Ubuntu

sudo a2enmod ssl
sudo service apache2 restart

 

Apache SSL配置

Listen 443  (如果配置已经存在就不要加)
LoadModule ssl_module modules/mod_ssl.so (如果配置已经存在就不要加)
NameVirtualHost *:443 (非必须,配置多个SSL站点会需要)
<VirtualHost *:443>
ServerName www.gworg.cn
ServerAlias gworg.cn
DocumentRoot /var/www/html
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCertificateFile /etc/ssl/server.crt 
SSLCertificateKeyFile /etc/ssl/server.key 
SSLCertificateChainFile /etc/ssl/server.ca-bundle
</VirtualHost>

以上只是SSL配置范例,尽量不要直接应用于生产环境,请根据80端口的站点配置修改。
证书可以放在其他位置,没有强制要求
ServerName 和 ServerAlias 需要修改

配置完成重启Apache使其生效.

service httpd restart

使用https://yourdomain.com 测试是否可以访问。

 

问题排查:

如果使用CDN(加速器),需要在CDN上面安装证书,国内免费加速的都不支持https(已知阿里云cdn支持)

检查443端口是否启动   使用下面命令 netstat -apnt | grep 443    (如果没有启动检查配置文件或者端口是否冲突)

443端口如果已经启动,但不能访问,请检查防火墙(或者安全狗) ,允许443端口.

linux iptables使用下面命令:

iptables -A INPUT -p tcp -m tcp --dport https -j ACCEPT


Apache自动跳转到 HTTPS

 

网站根目录新建 .htaccess

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]

301跳转

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L]
</IfModule>

站点绑定多个域名,只允许www.gworg.com 跳转

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^example.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]

###把网址更改为自己的###

高级用法 (可选)

RewriteEngine on
# 强制HTTPS
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{SERVER_PORT} 80
# 某些页面强制
RewriteCond %{REQUEST_URI} ^something_secure [OR]
RewriteCond %{REQUEST_URI} ^something_else_secure
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
# 强制HTTP
RewriteCond %{HTTPS} =on [OR]
RewriteCond %{SERVER_PORT} 443
# 某些页面强制
RewriteCond %{REQUEST_URI} ^something_public [OR]
RewriteCond %{REQUEST_URI} ^something_else_public
RewriteRule .* http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]



OneinStack一键包快速自动配置Let's Encrypt免费SSL证书方法

如果我们不想购买付费SSL证书的话,选择和使用Let's Encrypt免费SSL证书应该算是目前比较优先的选择,虽然每隔90天需要重新激活续约一次,但是如果设定好自动续约问题也不是很大,而且兼容支持的浏览器算是比较齐全的,老左也看到不少的优秀网站也有在使用。

老左在前面一篇"LNMP V1.4一键快速部署Let's Encrypt免费SSL证书"文章中可以看到今年儿童节将会出来的正式版LNMP将会可以一键部署Let's Encrypt证书。同时,最近一年中用户较多的OneinStack一键包也是支持一键快速部署Let's Encrypt免费SSL证书的,老左将在这篇文章中记录我们如何用OneinStack一键包安装部署Let's Encrypt。

第一、OneinStack安装Let's Encrypt证书准备工作

1、我们当前服务器需要部署好OneinStack一键包,如果没有部署则需要参考这篇文章自动部署。

2、我们需要在配置好的环境中,再单独安装Let's Encrypt客户端,要不我们无法自动获取Let's Encrypt安装选项。

./addons.sh

OneinStack安装Let's Encrypt证书准备工作

我们只有安装好客户端后才可以添加站点的时候出现Let's Encrypt选项。

3、我们需要先将域名解析到当前服务器,这样安装证书配置时候会检测域名所有权。

第二、OneinStack添加站点自动配置Let's Encrypt

1、基本的站点部署参数设置

OneinStack添加站点自动配置Let's Encrypt

./vhost.sh

我们用正常添加站点的命令进行站点部署配置参数。

2、配置SSL证书

配置SSL证书

因为我们开始的时候安装了客户端,所以在这里可以看到有Let's Encrypt选项,我们只要 解析过来域名,这里一般没有问题,邮箱我们可以随便填写一个自己的。后面还有几个网站参数,比如日志、伪静态规则等,我们正常配置即可。

3、安装成功

安装成功

看到这样的界面,理论上是可以成功安装SSL。我们可以简单的丢一个页面到网站目录下,然后看看HTTPS是不是强制跳转过去。这个时候我们只要配置网站或者搬迁网站修改指向即可。

第三、关于Let's Encrypt自动续约问题

关于Let's Encrypt自动续约问题

老左看到自动部署SSL之后,也自动添加续约脚本。前提是我们的服务器要安装好crontab,如果没有安装则需要自己先安装,要不部署不到。

第四、OneinStack一键包配置Let's Encrypt小结

1、我们在OneinStack环境中配置Let's Encrypt证书还是比较简单的,前提是我们要安装Let's Encrypt客户端后再添加站点才有选项。

2、缺点就是我们站点要开始添加的时候才可以自动部署选择Let's Encrypt安装,如果是已有站点,则不可以自动单独配置。

posted @ 2018-04-12 15:41  谦信君  阅读(3417)  评论(0编辑  收藏  举报