目标:
让自己的网站,yyii.info用https://yyii.info访问,
条件:
1.用的是阿里云服务器,
https://promotion.aliyun.com/ntms/act/qwbk.html 330元/年。40G。
用oneinstack一键安装的。https://oneinstack.com/
2.在阿里云申请一个免费的证书。在安全(云盾)栏目->证书服务。
申请后,大约1天,会提示下载相关文件,上传到网站下。然后再等待自动审核通过。
之后,就能下载证书。
下载来有4个文件,
214113615990489.key,
214113615990489.pem,
chain.pem
public.pem
(域名放在西部数码的,也能申请一个免费证书。好象不能用到阿里云这边来。)
阿里云里有相关说明,如何布署证书。(这一段见本文后面)
因我的服务器是按oneinstack安装的。就不需使用阿里云的方法。
3.配置网站
./vhost.sh
配置了一个网站,
Do
you want to setup SSL under Nginx? [y/n]: y
其他的按提示来。上面如果不是配置https的网站,就选n.
4.然后,可看到,
在/usr/local/nginx/conf/ssl
生成了,三个文件,
yyii.info.crt
yyii.info.csr
yyii.info.key
5.
但同时,也报了如下:
nginx:
[warn] "ssl_stapling" ignored, issuer certificate not found
for certificate "/usr/local/nginx/conf/ssl/yyii.info.crt"
AH00526:
Syntax error on line 6 of
/usr/local/apache/conf/vhost/yyii.info.conf:
Invalid
command ‘SSLEngine‘, perhaps misspelled or defined by a module not
included in the server configuration
https仍是不能访问。
6.
群主yeho告诉我:你这个自签名证书
自己购买证书替换 重启nginx即可
7.
我在阿里云申请得到一年的免费证书,
下载来有4个文件,
214113615990489.key,
214113615990489.pem,
chain.pem
public.pem
然后,我是把这4个文件,放在,/usr/local/nginx/conf/ssl下
214113615990489.key,重命名为
,域名.key
214113615990489.pem重命名为,
域名.crt
在此感谢群主指点,不然自己哪里会知道啊!
8.重启nginx
有一点注意,如果网站下有index.html,会先读index.html.
10.
让我们再看看:
oneinstack生成的,/usr/local/nginx/conf/vhost/yyii.info.conf
server { listen 80; listen 443 ssl http2; ssl_certificate /usr/local/nginx/conf/ssl/yyii.info.crt; ssl_certificate_key /usr/local/nginx/conf/ssl/yyii.info.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers on; ssl_session_timeout 10m; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_buffer_size 1400; add_header Strict-Transport-Security max-age=15768000; ssl_stapling on; ssl_stapling_verify on; server_name yyii.info; access_log off; index index.html index.htm index.php; root /data/wwwroot/yyii.info; if ($ssl_protocol = "") { return 301 https://$host$request_uri; } location / { try_files $uri @apache; } location @apache { proxy_pass http://127.0.0.1:88; include proxy.conf; } location ~ .*\.(php|php5|cgi|pl)?$ { proxy_pass http://127.0.0.1:88; include proxy.conf; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ { expires 30d; access_log off; } location ~ .*\.(js|css)?$ { expires 7d; access_log off; } location ~ /\.ht { deny all; }
11.看看 阿里云里写的如何安装证书,apache下,
安装证书
文件说明:
1.证书文件214113615990489.pem,包含两段内容,请不要删除任何一段内容。
2.如果是证书系统创建的CSR,还包含:证书私钥文件214113615990489.key、证书公钥文件public.pem、证书链文件chain.pem。
( 1 )在Apache的安装目录下创建cert目录,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,请将对应的私钥文件放到cert目录下并且命名为214113615990489.key;
( 2 ) 打开apache 安装目录下conf 目录中的httpd.conf 文件,找到以下内容并去掉“#”:
#LoadModule ssl_module modules/mod_ssl.so (如果找不到请确认是否编译过 openssl 插件) #Include conf/extra/httpd-ssl.conf
( 3 ) 打开 apache安装目录下 conf/extra/httpd-ssl.conf文件 (也可能是conf.d/ssl.conf,与操作系统及安装方式有关),
在配置文件中查找以下配置语句:
# 添加 SSL 协议支持协议,去掉不安全的协议 SSLProtocol TLSv1 TLSv1.1 TLSv1.2 # 修改加密套件如下 SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4 # 证书公钥配置 SSLCertificateFile cert/public.pem # 证书私钥配置 SSLCertificateKeyFile cert/214113615990489.key # 证书链配置,如果该属性开头有 ‘#‘字符,请删除掉 SSLCertificateChainFile cert/chain.pem
( 4 ) 重启 Apache。
( 5 ) 通过https方式访问您的站点,测试站点证书的安装配置,如遇到证书不信任问题,请查看相关文档。
---------- 招募未来大神 -----------------------
如果您有利他之心,乐于帮助他人,乐于分享
如果您遇到php问题,百度且问了其他群之后仍没得到解答
欢迎加入,PHP技术问答群,QQ群:292626152
教学相长!帮助他人,自己也会得到提升!
为了珍惜每个人的宝贵时间,请大家不要闲聊。
愿我们互相帮助,共同成长!
加入时留言暗号,php,ajax,thinkphp,yii...