最近プレイするウェブサイトを取得したい、httpsプロトコルが既に傾向で使用してWebサイトを公開。例えば小型マイクロチャネルプログラム、アクセスを防ぐことはできませんでしたhttpsプロトコルを使用して。だから、私はあなたと一緒にしようとした3つのメソッドを共有しています。
1.Linux自己署名(OPENSSLが発生した自己署名SSL)
2.アリ雲の無料証明書
永久無料のSSL証明書3.Letの暗号化壁の亀裂[推奨]
、Linuxは自己署名(OpenSSLは、自己署名SSLを生成します)
ステップ1:秘密鍵を生成します
RSA秘密鍵を生成するには、次のコマンドを実行します。
//生成rsa私钥,des3算法,1024位强度,ssl.key是秘钥文件名。
openssl genrsa -des3 -out ssl.key 1024
それから彼は簡単にあなたが設定した、このキーファイルにパスワードを入力するように要求されます。
nginxのが原因後で使用を与えます。あなたはPAMでnginxの設定時間をリロードするたびにパスワードを確認します。
しかし、生成されたパスワードを入力しなければならないとき。あなたは、次のコマンドを実行し、その後、削除生成した後、後でので、多くの問題にしたくない場合。
openssl rsa -in ssl.key -out ssl.key
ステップ2:CSR(証明書署名要求)を生成します
以下のように、単に生成されたファイルのキーファイルを生成するための証明書の要求:
openssl req -new -key ssl.key -out ssl.csr
説明:上記のコマンドを実行した後、あなたが輸入国、地域、都市、組織、組織単位、共通名と電子メールを有効にする必要があります。ドメイン名と一致する必要があります共通名。
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:GuangDong
Locality Name (eg, city) []:ShenZhen
Organization Name (eg, company) [Internet Widgits Pty Ltd]:tsy
Organizational Unit Name (eg, section) []:tsy
Common Name (e.g. server FQDN or YOUR name) []:selfssl.hxkj.vip 这一项必须和你的域名一致
Email Address []:[email protected]
ステップ3:自己署名証明書を生成します
二つ以上のファイルに基づいて生成されたCRT証明書ファイルは、次のコマンドを実行します。
//这里3650是证书有效期(单位:天)。这个大家随意。最后使用到的文件是key和crt文件。
openssl x509 -req -days 3650 -in ssl.csr -signkey ssl.key -out ssl.crt
一時的な自己署名証明書を使用するには、ブラウザは、認証局が不明であるプロンプトが表示されます、ということに注意してください。
ステップ4:秘密鍵と証明書をインストールします。
設定ファイルconfディレクトリを開くNginx.conf 443ポートモニタの設定を改変。一般nginxの設定ファイルのデフォルトのパスが開き、変更するには、次のコマンドを実行し、/etc/nginx/nginx.confです。
vim /etc/nginx/nginx.conf //路径是你的nginx配置文件路径
次のようにデフォルトの設定では、コメントアウト443 nginxのリスニングポートの設定です:
# Settings for a TLS enabled server.
# server {
# listen 443;
# server_name localhost;
#ssl on;
#root /usr/share/nginx/html;
#ssl_certificate "";
#ssl_certificate_key "";
#ssl_session_cache shared:SSL:1m;
#ssl_session_timeout 5m;
#ssl_protocols SSLv2 SSLv3 TLSv1;
#ssl_ciphers HIGH:!aNULL:!MD5;
#ssl_prefer_server_ciphers on;
#
# Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# location / {
# }
#
# error_page 404 /404.html;
# location = /40x.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
#}
オープンコメント、前記のように変性された変性部分は、以下:
# Settings for a TLS enabled server.
server {
listen 443;
server_name selfssl.hxkj.vip; //此处填写你自己的域名
ssl on;
root /usr/share/nginx/html;
ssl_certificate "/home/ssl/ssl.crt"; //此处填写刚刚生成的ssl.crt文件路径
ssl_certificate_key "/home/ssl/ssl.key"; //此处填写刚刚生成的ssl.key文件路径
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
構成を変更して保存した後、次のコマンドを実行します。
nginx -s reload
nginxのは、コンフィギュレーション、コンフィギュレーションをリロードすることができます。
OK、ここhttpsプロトコルを確認するために、Linuxの設定方法からページを使用して行われ、あなたも効果を見るために私を訪問することができ、アドレスします。https://selfssl.hxkj.vip
ヒント:セキュリティが非常に低いため、Googleのブラウザをブロックされる自己署名証明書
以下は、証明書の検出の詳細については、
第二に、アリは無料の証明書を曇らせます
ステップ1:証明書サービスを選択し、アリの雲のアカウントをログに記録
ステップ2:DV SSを選択
ステップ3:シマンテックを選択
ステップ4:OV SSLを選択
ステップ5:フリータイプDV SSLを選択
ステップ6:まあ、曲がりくねった選択、購入後、(とにかく自由)0元を支払います
ステップ7:コンソールが成功した購入後返された証明書は、その後、完了情報をクリックしてください
手順8:ドメイン名の証明書に記入して結合すると、[OK]を自分のニーズに応じて記入
ステップ9:ちょうど罰金を記入し、申請者の個人情報を入力してください
ステップ10:正常終了した後は、図に示されているドメイン構成ガイドページを返します。
ステップ11:アナリティックを追加し、独自のドメインコンソールを開き
ステップ12:情報は、図1に示す第1のステップ10を、埋めるためにここにある、ドメイン名にTXTレコードを追加します。
ステップ13:設定を完了した後、ページの設定が自動的に証明書を返し、検出するように構成することができます
適切に設定すると、左が「正しく記録に設定されたDNSは、しばらくお待ちください。」と表示されます それ以外の場合は、ドメイン名は、誤って設定TXTレコードで情報を正しく入力するかどうかをチェックするためにステップ12に戻ります。
ステップ14:結果の10分以内に一般には、正しく構成され、それが自動的に証明書をダウンロードするには、このページに戻ります
ステップ15:詳細には触れませんが、証明書、アリのチュートリアルが非常に詳細なインストール
ここで参照できる私のnginxの設定内容は次のとおりです。
server {
listen 443;
server_name alissl.hxkj.vip;
ssl on;
root /usr/share/nginx/html;
ssl_certificate "/home/alissl/214715369370158.pem";
ssl_certificate_key "/home/alissl/214715369370158.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
構成を変更して保存した後、次のコマンドを実行します。
nginx -s reload
nginxのは、コンフィギュレーション、コンフィギュレーションをリロードすることができます。
OK、ここに完全なクラウド・フリー法アリ証明書httpsプロトコルの設定で、あなたも効果を見るために私のページを訪問することができ、アドレスします。https://alissl.hxkj.vip
以下は、証明書の検出の詳細については、
三、のは自由な証明書を暗号化してみましょう
1:さんはプロフィールを暗号化してみましょう
のは、公共および無料のSSLプロジェクトの顧客が徐々に普及し、使用されているとして、Mozillaの、シスコ、アカマイ、アイデントラスト、EFF及びその他主催者が主催して暗号化してみましょう、主な目的は、今、HTTPS、過剰なプロセスにHTTPからサイトを促進することですより多く参加する企業やスポンサーの支援が行われています。
Let's Encrypt免费SSL证书的出现,也会对传统提供付费SSL证书服务的商家有不小的打击。到目前为止,Let's Encrypt获得IdenTrust交叉签名,这就是说可以应用且支持包括FireFox、Chrome在内的主流浏览器的兼容和支持,虽然目前是公测阶段,但是也有不少的用户在自有网站项目中正式使用起来。
Let's Encrypt 的最大贡献是它的 ACME 协议,第一份全自动服务器身份验证协议,以及配套的基础设施和客户端。这是为了解决一直以来 HTTPS TLS X.509 PKI 信任模型,即证书权威(Certificate Authority, CA)模型缺陷的一个起步。在客户端-服务器数据传输中,公私钥加密使得公钥可以明文传输而依然保密数据,但公钥本身是否属于服务器,或公钥与服务器是否同属一个身份,是无法简单验证的。证书权威模型通过引入事先信任的第三方,由第三方去验证这一点,并通过在服务器公钥上签名的方式来认证服务器。第三方的公钥则在事先就约定并离线准备好,以备访问时验证签名之用。这个第三方就称为证书权威,简称CA。相应的,CA验证过的公钥被称为证书。问题是,如果服务器私钥泄露,CA无法离线使对应的证书无效化,只能另外发布无效记录供客户端查询。也就是说,在私钥泄露到CA发布无效记录的窗口内,中间人可以肆意监控服-客之间的传输。如果中间人设法屏蔽了客户端对无效记录的访问,那么直到证书过期,中间人都可以进行监控。而由于当前CA验证和签发证书大多手动,证书有效期往往在一年到三年。Let's Encrypt 签发的证书有效期只有90天,甚至希望缩短到60天。有效期越短,泄密后可供监控的窗口就越短。
2:部署Let's Encrypt证书
2.1 检查服务器是否安装Python与Git
检测Python指令
#检查Python的版本是否在2.7以上
python -v //2.7版本
如果没有安装Python的话,执行以下命令进行安装(如果检测到已安装则略过)
#安装python所需的包
yum install zlib-devel
yum install bzip2-devel
yum install openssl-devel
yum install ncurses-devel
yum install sqlite-devel
#获取到Python
cd /usr/local/src
wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tar.xz
#解压Python2.7.12
tar -xvf Python-2.7.12.tar.xz
#编译python
cd Python-2.7.12/
./configure --prefix=/usr/local/python2.7
make && make install
#建立link
ln -s /usr/local/python2.7/bin/python2.7 /usr/local/bin/python
#解决系统 Python 软链接指向 Python2.7 版本后,因为yum是不兼容 Python 2.7的,所需要指定 yum 的Python版本
# vim /usr/bin/yum
将头部的
#!/usr/bin/python
改成
#!/usr/bin/python2.6.6
检测Git指令
#检查系统是否安装git
git --version
如果没有安装Git的话,执行以下命令进行安装(如果检测到已安装则略过)
#git 安装
yum install git
2.2 快速获取Let's Encrypt免费SSL证书
相较于第一种自签生成证书的方法,Let's Encrypt肯定是考虑到推广HTTPS的普及型会让用户简单的获取和部署SSL证书,所以可以采用下面简单的一键部署获取证书。
#获取letsencrypt
git clone https://github.com/letsencrypt/letsencrypt
#进入letsencrypt目录
cd letsencrypt
#生成证书 --email后填写自己的邮箱 -d 后面填写需要配置证书的域名(支持多个哦)
./letsencrypt-auto certonly --standalone --email [email protected] -d hxkj.vip -d www.hxkj.vip
Let's Encrypt是支持绑定多域名的,上述两种方法都是只支持单域名。
2.3 Let's Encrypt免费SSL证书获取与应用
在完成Let's Encrypt证书的生成之后,我们会在"/etc/letsencrypt/live/hxkj.vip/"域名目录下有4个文件就是生成的密钥证书文件。
cert.pem - Apache服务器端证书
chain.pem - Apache根证书和中继证书
fullchain.pem - Nginx所需要ssl_certificate文件
privkey.pem - 安全证书KEY文件
因为我的是Nginx环境,那就需要用到fullchain.pem和privkey.pem两个证书文件。修改nginx配置的详细过程,上面两种方法都提到了,这里不再赘述,以下我修改好的配置文件:
server {
listen 443;
server_name hxkj.vip www.hxkj.vip;
ssl on;
root /usr/share/nginx/html;
ssl_certificate "/etc/letsencrypt/live/hxkj.vip/fullchain.pem";
ssl_certificate_key "/etc/letsencrypt/live/hxkj.vip/privkey.pem";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
OK,到这里就完成了使用Let's Encrypt免费证书的方法配置https协议,大家也可访问我的页面来查看效果,地址:https://www.hxkj.vip
下面是证书检测详情
从上图可以看出,Let's Encrypt证书是有效期90天的,需要我们自己手工更新续期才可以。但是,身为程序员,可以自动执行的事,坚决不手动搞。
2.4 Let's Encrypt证书自动续期,实现真正的永久免费使用
2.4.1 编写shell脚本
执行以下命令,在"/etc/letsencrypt/live/hxkj.vip/"域名目录下创建脚本,方便管理
vim /etc/letsencrypt/live/hxkj.vip/updatessl.sh //创建一个名字为updatessl的脚本
然后在脚本里添加如下代码
#!/bin/sh
/usr/local/src/Python-2.7.12/letsencrypt/certbot-auto renew --force-renew --pre-hook "service nginx stop" --post-hook "service nginx start"
#第一行是指此脚本使用/bin/sh 来执行
#第二行中--force-renew参数代表强制更新
退出并保存,然后给脚本添加可执行权限
// 这里的文件路径填写你自己的文件路径
chmod +x /etc/letsencrypt/live/hxkj.vip/updatessl.sh
2.4.2 创建定时任务
打开crontab文件
crontab -e
然后在文件末尾添加一行以下内容
0 0 28 * * root /etc/letsencrypt/live/hxkj.vip/updatessl.sh //我这里代表每月28号更新一次证书文件,文件路径填写你自己的文件路径
具体格式如下:
Minute Hour Day Month Dayofweek command
分钟 小时 天 月 天每星期 命令
每个字段代表的含义如下:
Minute 每个小时的第几分钟执行该任务
Hour 每天的第几个小时执行该任务
Day 每月的第几天执行该任务
Month 每年的第几个月执行该任务
DayOfWeek 每周的第几天执行该任务
Command 指定要执行的程序
在这些字段里,除了“Command”是每次都必须指定的字段以外,其它字段皆为可选字段,可视需要决定。对于不指定的字段,要用“*”来填补其位置。
记得重启crontab服务哦。好了,自动更新证书已经配置完了,再也不用担心证书过期啦!这也是我推荐使用这种方式生成证书的原因之一,没办法,懒啊~~~
四、总结
1.通过Linux自签方式生成签名文件,这种方式操作繁琐,安全性低,反正就是吃力不讨好,不推荐使用。
2.使用阿里云的免费证书,配置方便,唯一的缺点就是有效期只有一年,万一忘记更新就炸了。但是一年的时间也还好,可以考虑使用。
3.使用Let's Encrypt证书,安全性优良,各大厂商都支持,还能实现自动更新有效期,这种方式强烈推荐!!!
转载请注明出处:https://www.jianshu.com/p/eaad77ed1c1b
作者:TSY
个人空间:https://www.hxkj.vip