轻松全站 HTTPS,还没用上 https (可申请泛域名证书)的朋友可以操练起来了

前言

注意:上 HTTPS 超级简单,写这么多,只是因为过程比较有趣,就多哆嗦了几句
有了自己的博客:《极简博客搭建,搭建超级简单又好看》
有了自己的图片处理服务:《搭建自己的图片处理服务 — 智能裁剪、旋转、占位一站搞定》
都已经这么完美了,为什么还会有这篇文章呢?是对社会有什么不满意吗?
HTTPS

为什么要上 HTTPS

**安全:**你与用户之间的消息加密传输,防止中间人攻击(就是我遇到的问题)
**其它优点:**当你在国内使用域名时,需要备案。有时你想测试一下你的站,用上未备案的域名,怎么办呢?https 可以帮你暂时绕过阿里云弹的未备案页(强烈建议去备案你的域名,一来你应当守法,二来未备案国内 cdn、网站收录什么的都需要备案的域名),其它暂时没想到有什么优点。

因果

前些天刚搭了个漂亮的小博客,写了几篇小日记还没有修改成小说。可以说非常开心了,于是今天早早洗完澡准备在床上用手机体验下网站自适应的效果。打开微信,扫了下自己站的二维码,顺势躺在床上。划~划~划,突然底部跳出一个广告,咦?什么情况?我什么时候投的广告??这博客不会这么坑吧?竟然自带广告。
不行,得起来撸代码了。带着懊恼的心情,我又回到了电脑前,开始检查博客的源码,看看具体哪里出了这个问题。看了一遍,没有问题。突然想到,这可能是被运营商劫持了。那没办法了,只能连夜上个 HTTPS 了。

还没有服务器?快领取一张高额优惠券

准备

  • 域名(自备)
  • acme.sh
    acme.sh 是一个自动申请 https 证书的脚本,使用方便,功能也非常强大。
    安装:
    curl https://get.acme.sh | sh
    或者
    wget -O - https://get.acme.sh | sh
    这样你已经把 acme.sh 这个小工具安装到你本地的 ~/.acme.sh/中了,而不会在你系统的其它地方装些乱七八糟的东西。

极速开始

不是阿里的朋友,可以尝试下面的常规路线
阿里云购买域名的朋友可以走这个极速通道,因为阿里云有接口可以直接操作域名控制台,这个接口已经被整合到了 acme.sh这个工具里面。只要设置一下 Ali_Key 和 Ali_Secret, 从哪里获得?

  1. 在你的命令行中执行如下命令:
    export Ali_Key="换成你的 AccessKey ID"
    export Ali_Secret="换成你的 Access Key Secret"

  2. 开始申请证书
    acme.sh --issue --dns dns_ali -d 2td.cc -d '*.2td.cc'
    2td.cc是我的域名,这里需要换成你的。
    参数解释:
    acme.sh表示使用你刚安装好的acme.sh
    –issue :申请证书
    –dns dns_ali:使用阿里云的 dns 服务,在阿里云买的域名,在没有修改默认 dns 的前提下,都可以使用这个参数来申请 https 证书。
    -d 2td.cc-d表示 domain,后面跟你要申请域名。
    -d ‘*.2td.cc’:这里的-d 与上方一样,-d 参数可以带多个,这里的'*.2td.cc'中的 * 表示泛域名,只要申请了这个证书像(www.2td.ccmail.2td.cch5.2td.cc …)这类的二级域名都可以使用此证书来实现 https。注意 2td.cc这个域名不在这条规则里,所以上面又加了一条-d 2td.cc,这样你的主域名、二级子域名均可以使用此证书。

  3. 等待执行完成,期间会有 120 秒的倒计时,结束后如果显示成功,则证书申请成功。

申请中...
申请完成
申请好的证书路径

  1. 应用到 nginx
    修改你 nginx 的配置,配置 https
server {
    listen 443 ssl;
    # 有了 https 可以尝试开启 http2,加速你的网站 
    # http2 需要你 nginx 加载了 http2 模块,用如下配置开启。
    # listen 443 ssl http2;
    server_name 2td.cc;

    ssl_certificate /root/.acme.sh/2td.cc/fullchain.cer;
    ssl_certificate_key /root/.acme.sh/2td.cc/2td.cc.key;

    # charset koi8-r;
    access_log  /var/log/nginx/host.access.log  main;
    
    # 下面写你之前的配置
}

常规路线

一些 DNS 服务商,没有提供 API 操作 DNS 的接口,所以整合不进这个工具里。当然我们也还是可以申请证书。
这种方式的好处是, 你不需要任何服务器, 不需要任何公网 ip, 只需要 dns 的解析记录即可完成验证. 坏处是,如果不同时配置 Automatic DNS API,使用这种方式 acme.sh 将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。

  1. 申请证书
    acme.sh --issue --dns -d aiwdh.cn --yes-I-know-dns-manual-mode-enough-go-ahead-please
    aiwdh.cn是我的域名,这里需要换成你的。
    参数解释:
    acme.sh表示使用你刚安装好的acme.sh
    –issue :申请证书
    –dns:使用 DNS 的方式来验证你的所有权,你需要在域名上添加一条 txt 解析记录, 验证域名所有权。
    -d aiwdh.cn-d表示 domain,后面跟你要申请域名。
    –yes-I-know-dns-manual-mode-enough-go-ahead-please:官方不推荐使用此方式来生成证书,所以有这个额外的参数来提醒你你在做什么。
    申请证书

  2. 添加 txt 记录
    添加 txt 记录

  3. 加好记录后,重新申请证书
    acme.sh --issue --dns -d aiwdh.cn --yes-I-know-dns-manual-mode-enough-go-ahead-please --renew
    重新申请证书
    申请好的证书路径

  4. 应用到 nginx
    修改你 nginx 的配置,配置 https

server {
    listen 443 ssl;
    # 有了 https 可以尝试开启 http2,加速你的网站 
    # http2 需要你 nginx 加载了 http2 模块,用如下配置开启。
    # listen 443 ssl http2;
    server_name aiwdh.cn;

    ssl_certificate /root/.acme.sh/aiwdh.cn/fullchain.cer;
    ssl_certificate_key /root/.acme.sh/aiwdh.cn/aiwdh.cn.key;

    # charset koi8-r;
    access_log  /var/log/nginx/host.access.log  main;
    
    # 下面写你之前的配置
}
  1. 这种方式添加的证书,每当证书快过期,需要重新走一下这些步骤,稍微麻烦一点。

结语

如果用极速申请的方式,很快就可以实现全站 https 了。当然第二种方式来申请证书你都不需要在自己的服务器上作操作,你可以在本地完成申请,把证书拿到各个地方去用。

终于用上了 https, 再也没有多余的广告在我手机上显示了,开心。申请速度倒是很快,整理不易,且行且珍惜。
还没有服务器?快领取一张高额优惠券

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
很高兴为您介绍solidity的实操练习题。以下是一个简单的练习题,旨在帮助您熟悉solidity的基本语法和概念: <<引用>> 这是一个名为StringTest的合约,其中包含三个函数:getName,setName和printName。getName函数返回一个字符串变量name的值,setName函数将该变量的值设置为传递给它的字符串参数,printName函数将该变量的值打印到控制台。 您可以使用Remix等solidity IDE来编写和测试此合约。以下是一个示例代码: ```solidity pragma solidity ^0.4.0; contract StringTest{ string name = "xms"; function getName() public view returns(string){ return name; } function setName(string _name) public{ name = _name; } function printName() public{ bytes memory nameBytes = bytes(name); uint len = nameBytes.length; for(uint i = 0; i < len; i++){ byte b = nameBytes[i]; if(b >= 0x20 && b <= 0x7E){ // printable ASCII character printChar(b); } } } function printChar(byte b) private pure{ bytes memory bs = new bytes(1); bs[0] = b; string memory s = string(bs); print(s); } function print(string s) private pure{ bytes memory bs = bytes(s); uint len = bs.length; for(uint i = 0; i < len; i++){ byte b = bs[i]; assembly { mstore8(add(0x20, i), b) } } assembly { // load free memory pointer let ptr := mload(0x40) // store string length at free memory pointer mstore(ptr, len) // increment free memory pointer ptr := add(ptr, 0x20) // copy string data to free memory calldatacopy(ptr, add(0x20, bs), len) // return free memory pointer return(ptr, len) } } } ``` 您可以使用以下步骤在Remix中测试此合约: 1. 在Remix中创建一个新文件,并将上面的代码复制粘贴到文件中。 2. 在左侧面板中选择Solidity编译器,并单击Compile按钮。 3. 在左侧面板中选择Deploy & Run Transactions,并选择StringTest合约。 4. 在右侧面板中,您将看到三个函数:getName,setName和printName。单击getName按钮,您将看到返回值为“xms”的结果。 5. 单击setName按钮,并在参数框中输入一个新的字符串值,例如“hello”。然后单击Transact按钮。 6. 再次单击getName按钮,您将看到返回值为“hello”的结果。 7. 最后,单击printName按钮,您将在控制台中看到“hello”的输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值