- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
虽然,有 are similar questions ,甚至 good answers ,他们要么不特别关注本地主机,要么询问一个特定的选项/解决方案(自签名 vs CA)。
有什么选择?他们如何比较?我怎么做?
最佳答案
tl;博士 生成由自己的 CA 颁发的证书(请参阅下面的脚本)
这是我发现的。纠正我我错的地方。
有 CA(证书颁发机构)。他们为其他 CA(中间 CA)或服务器(最终实体证书)颁发证书(签署 CSR)。其中一些是根权限。他们有自己签发的自签名证书。也就是说,通常有一个从服务器证书到根证书的信任链。并且没有人可以保证根证书。因此,操作系统有一个根证书存储(或信任策略存储),一个系统范围的受信任根证书列表。浏览器有自己的可信证书列表,它由系统范围的列表加上用户信任的证书组成。
在 Chromium 中,您可以通过 chrome://settings/certificates 管理证书。在 Firefox 中,Preferences > Privacy & Security > Certificates > View Certificates
.两者都有 Authorities 选项卡,这是受信任的根证书列表。和服务器选项卡,受信任的服务器证书列表。
要获取创建 CSR(证书签名请求)的证书,请将其发送给 CA。 CA 签署 CSR,在此过程中将其转换为受信任的证书。
证书和 CSR 是一堆带有信息和公钥的字段。一些字段称为扩展。 CA证书是带有basicConstraints = CA:true
的证书.
您可以在 Developer Tools > Security
中检查 Chromium 中的证书错误.
在系统范围内信任证书
当您更改操作系统的根证书存储时,您必须重新启动浏览器。你改变它:
# trust anchor path/to/cert.crt
# trust anchor --remove path/to/cert.crt
trust
将 CA 证书置于“权威”类别(
trust list
)或“其他条目”类别下。 CA 证书出现在浏览器的 Authorities 选项卡中,或者出现在 Servers 选项卡中。
basicConstraints = critical,CA:true
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
subjectAltName = DNS:$domain
时,它会认为证书无效。 .
[ usr_cert ]
的
/etc/ssl/openssl.cnf
:
basicConstraints = CA:FALSE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
basicConstraints = CA:true
, 和
subjectAltName = DNS:$domain
.对于 Firefox 来说,这还不够:
basicConstraints = critical,CA:true
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
subjectAltName = DNS:$domain
subjectAltName
.
openssl
备忘单
openssl genpkey -algorithm RSA -out "$domain".key
- 生成私钥(
man )
openssl req -x509 -key "$domain".key -out "$domain".crt
- 生成自签名证书 (
man )
-subj
它将询问有关专有名称 (DN) 的问题,例如通用名称 (CN)、组织 (O)、位置 (L)。您可以“提前”回答:
-subj "/CN=$domain/O=$org"
.
subjectAltName
扩展,你要么有一个配置,其中所有的都被指定,或者添加一个部分到配置并告诉
openssl
它的名字是
-extensions
转变:
-config <(cat /etc/ssl/openssl.cnf - <<END
[ x509_ext ]
basicConstraints = critical,CA:true
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
subjectAltName = DNS:$domain
END
) -extensions x509_ext
openssl req -new -key "$domain".key -out "$domain".csr
- 生成CSR,可以取
-subj
选项 (
man )
openssl x509 -req -in "$domain".csr -days 365 -out "$domain".crt \
-CA ca.crt -CAkey ca.key -CAcreateserial
- 签署 CSR (
man )
-CAcreateserial
不起作用.它创建了一个
ca.srl
文件,它保存最后生成的证书的序列号。添加
subjectAltName
, 你会需要
-extfile
转变:
-extfile <(cat <<END
basicConstraints = CA:FALSE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
subjectAltName = DNS:$domain
END
)
openssl req -in $domain.csr -text -noout
- 查看 CSR (
man )
openssl x509 -in $domain.crt -text -noout
- 查看证书 (
man )
#!/usr/bin/env bash
set -eu
org=localhost
domain=localhost
sudo trust anchor --remove "$domain".crt || true
openssl genpkey -algorithm RSA -out "$domain".key
openssl req -x509 -key "$domain".key -out "$domain".crt \
-subj "/CN=$domain/O=$org" \
-config <(cat /etc/ssl/openssl.cnf - <<END
[ x509_ext ]
basicConstraints = critical,CA:true
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
subjectAltName = DNS:$domain
END
) -extensions x509_ext
sudo trust anchor "$domain".crt
#!/usr/bin/env bash
set -eu
org=localhost-ca
domain=localhost
sudo trust anchor --remove ca.crt || true
openssl genpkey -algorithm RSA -out ca.key
openssl req -x509 -key ca.key -out ca.crt \
-subj "/CN=$org/O=$org"
openssl genpkey -algorithm RSA -out "$domain".key
openssl req -new -key "$domain".key -out "$domain".csr \
-subj "/CN=$domain/O=$org"
openssl x509 -req -in "$domain".csr -days 365 -out "$domain".crt \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-extfile <(cat <<END
basicConstraints = CA:FALSE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
subjectAltName = DNS:$domain
END
)
sudo trust anchor ca.crt
server {
listen 443 ssl;
ssl_certificate ssl/localhost.crt;
ssl_certificate_key ssl/localhost.key;
...
carton exec morbo --listen='https://*:3000?cert=localhost.crt&key=localhost.key' \
site.pl
openssl-1.1.0.g
.
trust
公用事业。在 Windows 下有
two stores :本地机器和当前用户证书存储。使用本地机器证书存储没有意义,因为我们让它只为我们当前的用户工作。然后,有子商店。其中两个预定义最受关注:受信任的根证书颁发机构和中间证书颁发机构存储。通常在命令行中称为
root and CA .
>rem list Current User > Trusted Root Certification Authorities store
>certutil.exe -store -user root
>rem list Local Machine > Intermediate Certification Authorities store
>certutil.exe -store -enterprise CA
>rem GUI version of -store command
>certutil.exe -viewstore -user CA
>rem add certificate to Current User > Trusted Root Certification Authorities store
>certutil.exe -addstore -user root path\to\file.crt
>rem delete certificate from Current User > Trusted Root Certification Authorities store by serial number
>certutil.exe -delstore -user root 03259fa1
>rem GUI version of -delstore command
>certutil.exe -viewdelstore -user CA
root
localhost.crt
error
ca.crt
appears in Trusted Root Certification Authorities tab
CA
localhost.crt
doesn't work, appears in Other People tab
ca.crt
doesn't work, appears in Intermediate Certification Authorities tab
certmgr.msc
)或使用
CertMgr.exe
.
grep
安装后,这里是如何快速检查证书在哪里:
>certutil.exe -store -user root | grep "localhost\|^root\|^CA" ^
& certutil.exe -store -user CA | grep "locahost\|^root\|^CA" ^
& certutil.exe -store -enterprise root | grep "localhost\|^root\|^CA" ^
& certutil.exe -store -enterprise CA | grep "localhost\|^root\|^CA"
关于openssl - 如何让浏览器信任本地主机 SSL 证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49553138/
我在 Cloudflare 的域名服务器上有一个域名 example.com。该域指向我的专用服务器的 IP 地址,该服务器运行 CentOS/WHM/cPanel。该站点可访问 - 一切都很好。 我
我正在努力将 SSL 支持添加到我们现有的应用程序中,并已开始考虑向后兼容性。 与我读过的其他帖子不同的一个特殊情况是服务器可能不一定使用 SSL 代码更新。所以我将有一个 SSL 客户端连接到一个对
我有几个 https://*.rest-service.mydomain.com。随着服务数量的增加,我觉得管理 SSL 证书的成本很高。我为 *.mydomain.com 购买了通配符证书。 新添加
我的客户要求我在他的网站上做反向 ssl。但我是这个学期的新手。谁能帮我解决这个问题。 请描述或引用如何做。 最佳答案 查看 this wiki article . In the case of se
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 去年关闭。 Improve this
我连接到我的网络服务器上的存储库,但是当我尝试推送我的更改时,它显示:“错误 403:需要 ssl”,但在我的存储库设置中我已经激活了 ssl 选项。 有什么建议吗? 最佳答案 当您连接到存储库时,您
抱歉,如果这听起来像是转储问题,我已经阅读了很多关于 SSL 握手和 SSL 工作原理的文章和文档。我对一件事感到困惑,如果有人能澄清我就太好了。 我知道私钥要保密。但是我已经看到通过在请求中指定私钥
随着物联网越来越主流,越来越需要从硬件发送http请求。 一个主要问题是硬件微 Controller 无法发送 ssl 请求,但大多数服务器/网站/服务都在使用 ssl。 所以,问题是,有没有桥(一个
我有一个 ssl 页面,它还从非 ssl 站点下载头像。我能做些什么来隔离该内容,以便浏览器不会警告用户混合内容吗? 最佳答案 只是一个想法 - 或者: 尝试在头像网站上使用 ssl url,如有必要
我在 Digital Ocean droplet(使用 nginx)上设置了两个域。我已经在其中一个(domain1)中安装了一个 SSL 证书,并且那个证书一切正常。第二个域 (domain2) 不
我收到这个错误: Error frontend: 502 Bad gateway 99.110.244:443 2017/09/28 13:03:51 [error] 34080#34080: *10
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 6 年前。 Improve
我遇到了一个问题,我正在构建一个 nginx 反向代理以定向到不同 url 路径上的多个微服务。 该系统完全基于 docker,因此开发和生产使用相同的环境。这在安装 SSL 时给我带来了问题,因为
所以我知道要求 SSL 证书和接受之间的根本区别,一个意味着您必须拥有 SSL 证书,另一个意味着您不需要。 在某个网页的 IIS 管理器中,我有以下设置: 我遇到的问题是,当我设置需要 SSL 证书
我今天才发现 .app 域名需要 SSL 证书。我购买它是为了将 DNS 重定向到已经设置了 SSL 证书的站点,所以我的问题是是否可以设置它? 我正在使用 Google Domains,在将合成临时
堆栈 : react ,NGINX 1.14.0,GUnicorn,Django 2.2.8,Python 3.6.9 错误 : 在浏览器:当 React 调用 Django API(当然是在请求头中
假设我在计算机上编辑主机文件以使 google.com 指向我的 VPS 服务器 IP,并且服务器具有通过 Apache 或 Nginx 配置的 google.com 的虚拟主机/服务器 block
我有一个场景,我正在处理用于 URL 路由的 IIS 网站配置。我已添加网站并在服务器上导入所需的证书。 我的情况是(我有多个网站 URL 和两个 SSL 证书 - 如下所示): qatest1.ab
我知道服务器发送的证书无法伪造(仍然存在 MD5 冲突,但成本高昂),但是伪造客户端又如何呢?在中间人攻击中:我们不能告诉服务器我们是合法客户端并从该服务器获取数据并对其进行操作,然后使用合法客户端公
我已通读相关问题,但无法完全找到我要查找的内容。我设置了一个名为“domain.com”的域,并创建了两个子域“client.domain.com”和“client-intern.domain.com
我是一名优秀的程序员,十分优秀!