米饭粑 米饭粑
  • 首页
  • 好物推荐
    • 干货分享
    • 好物推荐
    • 免费资源
    • 非专业测评
  • 技术架构
    • Linux
    • HTTPS
    • Windows Server
  • 网站建设
    • 免费资源
    • 建站程序
    • 云建站
    • WordPress
  • 网络服务
    • CDN
    • DNS
    • HTTPS
  • 教程&更多
    • 更多教程
    • 资讯新闻
    • 琐琐碎碎
    • 关于米饭
    • 打赏米饭
  • 友情链接
  • 阿里云Ping
首页 › 技术架构 › HTTPS › 生成、签署 ECC 证书,Apache Httpd 部署双证书教程

生成、签署 ECC 证书,Apache Httpd 部署双证书教程

妙正灰
4年前HTTPS
2,071 2 0

前言

2017年绝对是移动互联网的加密元年,越来越多的移动互联网网站、应用会部署 HTTPS 加密,不过移动平台因为普遍基于 ARM 架构所以对处理 HTTPS 的性能和速度都不如电脑平台。

因此我们就需要部署更短、更快和更安全的 ECC 证书来实现移动平台的 HTTPS 的加密解密高效化。

介绍

椭圆曲线密码学(Elliptic curve cryptography,缩写为ECC),一种建立公开密钥加密的算法,基于椭圆曲线数学,其更适合于移动互联网,有更好的安全性和更好的性能。ECC加密算法 1985年 提出,到 2005 年才在各种操作系统中获得广泛支持,2015 年开始被普遍性的部署。

缺陷:

就像上面所说的一样,2005 年才被各大操作系统广泛支持,所以 2005 之前包括之后几年发布的操作系统都不会对其有很好的支持。

因此会需要使用本文介绍的双证书来解决。

签发

目前主流的 CA 都已经支持了 ECC 证书的签发,但是几个老牌大厂支持 ECC 的证书动辄就是几千元,那还玩个蛋。

目前廉价或免费的 ECC 证书解决方案:

  1. Comodo 的低端证书(四级证书链接,略长)
  2. Let’s Encrypt 的免费证书(90天签发一次,签发略复杂)

CSR 申请方法

一、生成 key

openssl ecparam -genkey -name secp256r1 -out mf8.biz-ecc.key

-name 参数 prime256v1 或者secp384r1。 256bit 其实安全性和速度都足够了.

二、生成 CSR


openssl req -new -sha256 -key vobe-io-ecc.key -out vobe-io-ecc.csr

在这里我们只需要 sha256 即可,这里之后会提问你很多问题,可以搜索一下 csr 的填写教程。

三、傻瓜

一键命令:

openssl ecparam -out 你的域名.ecc.pkey -name secp256r1 -genkey && openssl req -new -key 你的域名.ecc.pkey -sha256 -nodes -out 你的域名.ecc.csr -subj “/C=CN/ST=省份/L=城市/O=组织/OU=组织单位/部门/分支/CN=你的域名”

将中文部分修改补齐即可,默认生成 256 bit 的 key 和 csr 。

在线生成:
https://www.chinassl.net/ssltools/generator-csr.html

Let’s Encrypt 方法

这里介绍用 acme.sh 签发,米饭也是用这货签的。
指定 --keylength ec-256 就可以将证书类型改为 ECC:

acme.sh --issue -w /data/wwwroot/www.mf8.biz -d mf8.biz -d www.mf8.biz --keylength ec-256

Apache Httpd 双证书

Nginx 教程:https://www.mf8.biz/ecc-nginx-double-cert/

Apache Httpd 版本: 2.4(2.2 我测试不成功),然后 OpenSSL 库的版本不同,方法也不同。

OpenSSL 1.0.2 or Later

适用于: Ubuntu 16.04 、Debian 9 or 8 + BackPorts 等系统 OpenSSL 版本较高的系统

这里就会非常简单,只要复制两份即可,然后必须将证书和证书链合并为一个文件(证书上,证书链下)。

#ECC 在前
SSLCertificateFile "/usr/local/httpd/conf/ssl/www.mf8.biz.ecc.crt"
SSLCertificateKeyFile "/usr/local/httpd/conf/ssl/www.mf8.biz.ecc.key"
#RSA 在后
SSLCertificateFile "/usr/local/httpd/conf/ssl/www.mf8.biz.crt"
SSLCertificateKeyFile "/usr/local/httpd/conf/ssl/www.mf8.biz.key"

OpenSSL < 1.0.2

适用于: Centos 7 Ubuntu 14.04 等系统 OpenSSL 版本小于 1.0.2 的,需要将 ECC 和 RSA的证书链合并,ECC 在前,RSA 在后。

#ECC 在前
SSLCertificateFile "/usr/local/httpd/conf/ssl/www.mf8.biz.ecc.crt"
SSLCertificateKeyFile "/usr/local/httpd/conf/ssl/www.mf8.biz.ecc.key"
#RSA 在后
SSLCertificateFile "/usr/local/httpd/conf/ssl/www.mf8.biz.crt"
SSLCertificateKeyFile "/usr/local/httpd/conf/ssl/www.mf8.biz.key"
#合并的证书链
SSLcertificateChainFile "/usr/local/httpd/conf/ssl/ca.crt"

Cipher Suites

然后不管 OpenSSL 版本,Cipher Suites 都要搞好,不然双证书是不会生效的。

SSLCipherSuite: EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;

效果图

生成、签署 ECC 证书,Apache Httpd 部署双证书教程-米饭粑
生成、签署 ECC 证书,Apache Httpd 部署双证书教程-米饭粑
生成、签署 ECC 证书,Apache Httpd 部署双证书教程-米饭粑

Apache Httpd ECC Httpd Let's Encrypt 双证书
0
Apache Httpd 开启 HTTPS 和 HTTP/2
上一篇
在 Debian 安装 PHP7.1 并使用七牛缓存加速海外源
下一篇
评论 (2)
再想想
  • 小萝博客

    免费之后就是付费了

    4年前
    • 妙正灰

      @小萝博客: 啥意思? 付费是指?

      4年前
标签
Appnode Brotli CDN CentOS CentOS8 Debian DNS ECC ECS Ghost HTTP2 HTTPS IIS IPV6 Linux LiteSpeed MariaDB MySQL Nginx OLS OpenLiteSpeed OpenResty OSS PageSpeed PHP PHP7 QUIC Redis RHEL RHEL8 SSL TokuDB Ubuntu Windows Server 2016 Wordpress 云服务器 升级 域名 对象存储 微软 数据库 百度 笔记本 阿里云 阿里云ACP
文章归档
关注米饭粑微信公众号
2
相关文章
4月4日,全国哀悼,简单CSS代码将网站变成灰色
使用如下姿势预防阿里云 CDN 产生天价账单
阿里云IPv6实践,从云服务到云安全
不花一分钱构建阿里云上第零步安全体系
关于

稻粢穱麦,挐黄梁些,折腾云计算的经验分享和总结。

菜单
首页 教程 好物 关于 链接 打赏
内页链接
米饭粑 米范导航
Copyright © 2011-2021 米饭粑. Designed by nicetheme. 浙ICP备15006212号-1
  • 首页
  • 教程
  • 好物
  • 关于
  • 链接
  • 打赏
热门搜索
  • 402
  • 113
  • 546
  • 548
  • 460
妙正灰
文科屌丝伪IT男一枚.
337 文章
385 评论
367 喜欢
  • 0
  • 2
  • Top