https://github.com/fishdrowned/ssl
Self-signed Wildcard SSL Certificate Generator
https://github.com/fishdrowned/ssl
certificate ssl wildcard
Last synced: 6 months ago
JSON representation
Self-signed Wildcard SSL Certificate Generator
- Host: GitHub
- URL: https://github.com/fishdrowned/ssl
- Owner: Fishdrowned
- License: apache-2.0
- Created: 2016-11-03T14:10:40.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2024-07-26T21:37:13.000Z (about 1 year ago)
- Last Synced: 2025-03-28T09:04:12.747Z (6 months ago)
- Topics: certificate, ssl, wildcard
- Language: Shell
- Homepage:
- Size: 168 KB
- Stars: 526
- Watchers: 13
- Forks: 181
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 自签泛域名证书
此工具用于颁发泛域名证书,方便开发环境调试。请勿用于生产环境,生产环境还是购买正式的证书。
或者到 [Let's Encrypt](https://letsencrypt.org/) 可以申请到免费证书
(支持多域名和泛域名)。## 优点
1. 你可以创建任意网站证书,只需导入一次根证书,无需多次导入;
1. 减少重复又无谓的组织信息输入,创建证书时只需要输入域名;
1. 泛域名证书可以减少 `nginx` 配置,例如你要模拟 CDN:
假设你的项目网站是 `example.dev`,CDN 网站设置为 `cdn.example.dev`,
你只需在 `nginx` 里面配置一个网站,`server_name` 同时填写 `example.dev`
和 `cdn.example.dev`,它们可以使用同一个 `*.example.dev` 的证书。
1. 现在你只需要一个证书,就可以搞定所有项目网站!使用 `SAN` 来支持多域名和泛域名:
```ini
subjectAltName=DNS:*.one.dev,DNS:one.dev,DNS:*.two.dev,DNS:two.dev,DNS:*.three.dev,DNS:three.dev
```## 系统要求
1. Linux,openssl
1. 事先用 `hosts` 或者 `dnsmasq` 解析你本地开发的域名,
例如把 `example.dev` 指向 `127.0.0.1`## 使用
```bash
./gen.cert.sh [] [] [] ...
```
把 `` 替换成你的域名,例如 `example.dev`运行的输出像这样:

如果有多个项目网站,可以把所有网站都加上去,用空格隔开。
生成的证书位于:
```text
out//.crt
out//.bundle.crt
```证书有效期是 2 年,你可以修改 `ca.cnf` 来修改这个年限。
根证书位于:
`out/root.crt`
成功之后,把根证书导入到操作系统里面,信任这个证书。根证书的有效期是 20 年,你可以修改 `gen.root.sh` 来修改这个年限。
证书私钥位于:
`out/cert.key.pem`其中 `.bundle.crt` 是已经拼接好 CA 的证书,可以添加到 `nginx` 配置里面。
然后你就可以愉快地用 `https` 来访问你本地的开发网站了。## 清空
你可以运行 `flush.sh` 来清空所有历史,包括根证书和网站证书。## 配置
你可以修改 `ca.cnf` 来修改你的证书年限。
```ini
default_days = 730
```可以修改 `gen.root.sh` 来自定义你的根证书名称和组织。
也可以修改 `gen.cert.sh` 来自定义你的网站证书组织。
## 参考 / 致谢
[Vault and self signed SSL certificates](http://dunne.io/vault-and-self-signed-ssl-certificates)[利用OpenSSL创建自签名的SSL证书备忘](http://wangye.org/blog/archives/732/)
[Provide subjectAltName to openssl directly on command line](http://security.stackexchange.com/questions/74345/provide-subjectaltname-to-openssl-directly-on-command-line)
## 关于 Let's Encrypt 客户端
官方客户端 `certbot` [太复杂了](https://github.com/Neilpang/acme.sh/issues/386),推荐使用 [acme.sh](https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E)。## 关于 .dev 域名
[Chrome to force .dev domains to HTTPS via preloaded HSTS](https://ma.ttias.be/chrome-force-dev-domains-https-via-preloaded-hsts/) ([2017-9-16](https://chromium-review.googlesource.com/c/chromium/src/+/669923))## 关于 Chrome 信任证书问题
看到有人反映 Chrome 下无法信任证书,可参考 [这个文档](docs/chrome-trust.md)