我有一个想要使用客户端身份验证证书的网站。这只是我自己和少数家人/朋友的个人网站,因此我创建了一个 CA 来签署一些证书,我可以将这些证书分发给他们,以便他们无需密码即可登录。
问题是,我创建了两个 p12 格式的客户端证书,但无法将它们加载到 Chrome 或 Firefox 中。但我可以单独加载每个,但当我尝试加载第二个时出现“未知错误”。
因此,如果我首先将我的证书加载到 Chrome 或 Firefox 中,它会加载得很好。然后如果我添加我妻子的,我会收到错误。如果我删除我的证书并仅添加我妻子的证书,那就更好了。但是当我尝试导入我的证书时,出现错误。
这就是我创造一切的方式。
#1 Make CA and Cert
openssl genrsa -aes256 -out projects_ca.key 4096
openssl req -new -x509 -days 365 -key projects_ca.key -out projects_ca.crt
#2 Make Server Key
openssl genrsa -aes256 -out projects_server.key 4096
openssl req -new -key projects_server.key -out projects_server.csr
#3 Self Sign Server Key
openssl x509 -req -days 365 -in projects_server.csr -CA projects_ca.crt -CAkey projects_ca.key -set_serial 001 -out projects_server.crt
#4 Make Client Key …Run Code Online (Sandbox Code Playgroud) 我不清楚第二个命令的作用
openssl genrsa -des3 -passout pass:123 -out private/server.key 2048
openssl rsa -passin pass:123 -in private/server.key -out private/server.key
Run Code Online (Sandbox Code Playgroud)
第一个生成使用 des3 和 pass 123 加密的 RSA 密钥。第二个怎么样?它会删除密码吗?
谢谢你,
我想通过在 VPS 上运行的代理强制将 HTTP(S) 流量从我的家庭网络发送到某些网站。
我安装tinyproxy在 VPS 上,在端口 上运行8080。在我的电脑上我正在运行
sudo ssh -i /home/user/.ssh/id_rsa -nNT -L 80:localhost:8080 -L 443:localhost:8080 remoteuser@vps
Run Code Online (Sandbox Code Playgroud)
本地访问代理。当我在 Firefox 设置中配置localhost:80为代理时,一切正常(HTTP 和 HTTPS)。
但由于我不希望所有流量都通过该代理,因此我将其添加到我的电脑中/etc/hosts:
127.0.0.1 server.example
Run Code Online (Sandbox Code Playgroud)
server.example是为 HTTP 和 HTTPS 配置的 Web 服务器的名称。
访问http://server.example正常,但https://server.example在 Firefox 中打开失败并出现错误
SSL_ERROR_RX_RECORD_TOO_LONG
Run Code Online (Sandbox Code Playgroud)
curl通过 HTTPS 访问页面也失败:
curl: (35) error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
Run Code Online (Sandbox Code Playgroud)
据我了解,此问题是由 tinyproxy 使用纯 HTTP 响应 HTTPS 请求引起的。
首先,理论上可以实现我想要的吗?那些所谓的“智能 DNS”服务似乎正是这样做的。
这个问题是由我的设置引起的还是tinyproxy无法做到这一点?是否有不同的代理服务器能够做到这一点?
编辑:目前我正在我的 PC 上运行 SSH 隧道,并且 DNS 修改也在本地,但我想稍后将其部署在我的路由器上,以便来自我网络的任何设备的流量都通过此代理。
EDIT2:正如 @SteffenUllrich 在评论中所写,当通过 …
最近,我的 Claws Mail 客户端每次尝试连接到我的 gmail 帐户(位于 pop.gmail.com)时都会弹出一条消息“SSL/TSL 证书已更改”,有两个选项:“取消连接”和“接受并保存” ”。我使用接受并保存,但 5 分钟后情况又重复了。我知道我可以skip_ssl_cert_check=1在配置文件中进行设置clawsrc,但我不完全理解其安全含义。对我来说特别奇怪的是,谷歌搜索这个弹出消息绝对没有任何结果,就好像我是第一个遇到这个问题的 Claws 和 gmail 用户一样。我使用 Claws 版本 3.16.0,移植到 Windows 10 中,如果有帮助的话。
Nginx 的ssl_client_certificate和ssl_trusted_certificate指令可用于允许给定机构签署客户端证书。但我怎样才能允许特定的证书呢?我想按证书指纹进行过滤,或者按证书颁发机构+客户端证书序列号进行过滤。
当客户端验证服务器的证书时,它知道服务器的域名,然后它可以检查该域名是否存在于服务器证书的 SAN(主题备用名称)字段中。
当服务器验证客户端的证书时,它不知道客户端的域名。这是否意味着客户端证书中的 SAN 没有用?
$ curl -s https://goolge.ca | wc
0 0 0
$ curl -vs https://goolge.ca
. . .
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (OUT), TLS alert, bad certificate (554):
* SSL certificate problem: EE certificate key too weak
* Closing connection 0
$ lsb_release -a
No LSB modules are available.
Distributor …Run Code Online (Sandbox Code Playgroud) 我想知道如何在 VLC 中手动信任证书。我的目的是通过 https 打开一个流。gnutls 返回错误:远程站点发送的证书的通用名称是“*.example.com”,与“foo.bar.example.com”不匹配(因为点)。
所以我想告诉VLC这个证书是可以信任的。例如,这可以在 Firefox 中轻松完成(它提供添加安全例外)。你如何在 VLC 中做到这一点?
我知道通过 SSL,浏览器通过公钥加密 rsa 算法获取安全网站的公钥,这两个建立会话密钥,然后通过一些对称算法继续通信,因为对称密钥加密/解密速度更快。SSL 使用哪种对称密钥算法?DES?AES?或者是其他东西?
谢谢
我正在阅读这篇文章,特别是“SSL in action”部分。它说:
当客户端通过其 SSL 安全端口连接到 company.com 时,公司会发回其公钥(以及一些其他信息,例如它支持的密码)。
...
一旦客户端对服务器(以及服务器与客户端,如果需要)感到满意,则客户端从服务器提供的加密方法列表中选择要使用的 SSL 密码,并生成“对称密钥” (密码)用于该密码。客户端使用服务器的公钥加密此密码并将其发送回服务器。服务器(并且只有服务器)可以解密此消息并获得此密码,该密码现在由客户端和服务器共享。
所以,我的理解是只有一个公钥;由受信任的第 3 方(thawte/godaddy/verisign 等)提供给 company.com 的那个。客户端然后选择接受此密钥/证书,然后发送用于加密未来通信的密码。
如果只有一个公钥,那么黑客不能只访问该站点一次,获取公钥的副本,然后在客户端发送密码时拦截他,使用他已有的公钥解密,然后监视所有未来的通讯?是什么阻止了它?
我不明白的部分是
服务器(并且只有服务器)可以解密此消息并获得此密码
为什么只有服务器才能解密消息?是什么阻止其他人解密它?
ssl ×10
https ×3
certificate ×2
encryption ×2
rsa ×2
security ×2
x509 ×2
claws-mail ×1
cryptography ×1
debian ×1
gmail ×1
linux ×1
nginx ×1
openssl ×1
proxy ×1
tls ×1