- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我成功地将HTTP上的Web应用程序从http接收。
实际上,我对在此过渡阶段遇到的两个文件的作用感到怀疑。我可以看到两个密钥文件,一个是.keystore,另一个是CAKey.pem。我特别想知道他们在什么时间拍摄的。在server.xml中,我找到属性keystoreFile(其值是密钥库的位置)和keystorePass(其值是我在生成.keystore文件期间输入的密码)的条目,而在ApplicationConfig.xml中,我找到两个属性,即openSSLLocation (相对于我能看到的openssl目录的值),第二个属性是密码(相对于我在生成CAKey.pem文件的过程中给定的密码值)。
是否想具体了解这些文件在SSL中包含哪些内容并发挥作用?
编辑我去了布鲁诺伸出的链接。我还通过了另一个信息链接,即http://www.verisign.com/ssl/ssl-information-center/how-ssl-security-works/。现在,通过两个链接,我的理解是kestore文件包含SSL证书的详细信息(如果我们使用像verisign这样的授权CA,它们将提供128位加密,而Java keytool命令证书可能无法提供默认密钥存储)。基于包含私钥的此证书,将进行加密。对?正如versign链接中指出的那样,最后还会发布数字签名作为确认。不确定证书是否具有链接中所指出的目的或认可?像CACert.pem,CAKey.pem这样的文件是否与数字证书相关?
编辑2
这是我遵循的SSL步骤
1)从http://www.slproweb.com/products/Win32OpenSSL.html下载Win32OpenSSL_Light-0_9_8t并安装
2)在OpenSSL安装目录中,创建private子目录。认证中心的私钥将存储在此处。
在OpenSSL安装目录中,创建子目录newcerts。由CA签名的新证书将存储在此处。
在OpenSSL安装目录中,创建一个名为index.txt的空文件。 OpenSSL将其签名证书数据库保留在该文件中。
从OpenSSL安装目录的子目录bin / PEM / demoCA中,将文件序列复制到OpenSSL安装目录。打开复制的串行文件并将其编辑为00,然后保存。每个新的CA签名证书的序列号均取自该文件的内容,每次对证书进行签名时,序列号都会递增。
3)在openssl.cfg中进行以下更改
dir = c:/ openssl <-这是OpenSSL安装目录
证书= $ dir / private / cacert.pem
#crl = $ dir / crl.pem
4)使用命令创建自签名证书
cd / d“%OPENSSL_HOME%”
openssl req -new -x509 -days 2000 -keyout private \ CAKey.pem -out private \ CACert.pem -config bin \ openssl.cnf
5)将证书PEM文件转换为DER编码的文件
cd / d“%OPENSSL_HOME%”
openssl x509 -in private \ CACert.pem -out private \ CACert.cer -outder DER
此命令在专用子目录中创建文件CACert.cer。
6)修改Java根证书
cd%JAVA_HOME%
keytool-导入-keystore jre \ lib \ security \ cacerts -alias AppOpenSSLCert-文件%OPENSSL_HOME%\ private \ cacert.cer
这会将我们的自签名CA证书添加到Java的受信任CA证书中,这些证书保存在Java JDK安装目录中的文件jre \ lib \ security \ cacerts中。
我们的自签名CA证书存储在别名AppOpenSSLCert下。
根据文档,它应该已经有效(即我尝试使用https击中URL),但是它不起作用。为了使其正常工作,我必须再运行一个命令,即
7)
C:\ Program Files \ Java \ jdk1.6.0_23> keytool -genkey -alias tomcat -keyalg RSA生成了.keystore文件和私钥)
最后,我在server.xml中进行了更改,并且它起作用了
keystoreFile =“ c:/。keystore”
keystorePass =“ changeit”
这就是为什么让我全神贯注的原因。如果我们使用第7步中生成的.keystore文件指向的证书,我从1到6(CAKey.pem和CACert.pem文件)执行的步骤的目的是什么。关于SSL我了解什么,我认为我不应该在server.xml中提及.keystore(在步骤7中生成),但是其他一些密钥库可能在步骤1-6期间某处生成,但是不确定文件名是什么以及在哪里生成?
verisign链接中的最后一个问题。它讨论了两个证书,即SSL证书和数字证书。 SSL证书和数字证书在上述情况下适合哪里?
最佳答案
从Java的角度来看,您首先应该尝试了解keystore and truststore之间的区别(两者都是用于不同目的的密钥库)。
JSSE中没有默认密钥库,但是默认情况下某些应用程序使用$HOME/.keystore
:这是包含您的证书的证书,并且您具有私钥。
相反,信任库确定您愿意信任哪些远程证书。它包含许多CA证书,遇到新证书时可以建立证书路径。如果存在这样的路径(并且如果激活了该证书则不撤消证书),则此(先验)未知证书将被视为受信任。
听起来您所使用的过程包括创建自己的证书颁发机构,因此最终将获得一个CA证书文件及其私钥(很可能是该CAkey.pem
文件)。这仅应用于与此CA颁发新证书。
如果我们使用授权的CA(例如verisign),它们将提供128位加密
这可能是由java keytool命令设置的默认密钥库
证书没有)。
不是用来选择加密密钥大小的证书,而是密码套件。 (The era of SGC certificates is over。)
在SSL / TLS握手期间,服务器证书用于对服务器进行身份验证(以确保客户端正在与要与其通信的服务器通信)并协商一组共享的对称密钥(取决于密码套件):这些是用于加密的密码。
如果要针对特定密钥大小使用keytool
生成证书,请使用-keysize 2048
(例如)。请注意,这是证书中密钥的大小,而不是用于加密本身的对称密钥的大小。
与keytool
大致相同的命令可用于生成CSR,以发送到商业CA。无论您使用商业CA还是自己使用,都不会有任何变化。加密强度。不同之处在于,默认情况下没有人会识别您自己的证书,因此您必须将其显式导入客户端。证书主要用于验证与您通信的远程实体的身份。
(您可能也对this question中的讨论感兴趣。)
编辑:
您混合了两个完全不同的过程。
1.创建自己的CA。
使用OpenSSL所做的就是生成自己的证书颁发机构(CA)。因此,您将获得CAcert.pem
和CAkey.pem
这是CA证书及其私钥(用于与此CA颁发新证书)。如果沿着这条路线走,您要做的就是将CAcert.pem
作为受信任的CA证书导入到客户端中,并且随您颁发的证书也将受到信任。您可能还对OpenSSL的CA.pl感兴趣,它是一个脚本,其中包装了许多您可能需要更手动完成的过程。
OpenSSL无法处理JKS文件,如果没有一些额外的步骤,此过程就不会很有用。在这里,您可以:
使用OpenSSL为服务器生成密钥+证书(CA.pl应该会帮助)。从Java的角度来看,更容易以PKCS#12格式(.p12
文件)导出它:然后,您可以直接从Java中将该文件用作类型为PKCS12
(在<您的配置)。
通过keystoreType="PKCS12"
通过keytool
生成CSR,使用OpenSSL颁发证书(同样,CA.pl应该会提供帮助),将此证书重新导入到密钥库中(通过-certreq
)并使用该JKS存储。
2.直接为此服务器使用自签名证书。
如果只有一台服务器,这可能是最简单的。
在这种情况下,请按照this answer中所述的步骤进行操作,并将与keytool
一起导出的证书导入到客户端的信任库(或浏览器)中。
verisign链接中的最后一个问题。它谈论两个证书,即
SSL证书和数字证书。其中SSL证书和
数字证书适合上述情况吗?
不确定,真的。我找不到它谈论“数字证书”的地方。严格来说,没有“ SSL证书”之类的东西,尽管该表达式或多或少总是表示“用于SSL / TLS的X.509证书”。
您可以将X.509证书用于SSL / TLS以外的其他目的,并将SSL / TLS与其他类型的证书一起使用。最常见的是带有SSL / TLS的X.509。
“数字证书”还可以涵盖更广泛的类别,例如OpenPGP证书也可以用于SSL / TLS(例如,参见this answer)。还有Attribute Certificates,甚至不包含公共密钥(在您真正了解X.509证书的含义之前,请不要阅读它们,否则会更加困惑)。
不过我的猜测是,Verisign将使用“ SSL证书”来表示与SSL一起使用的X.509证书,也可能是“ X.509”证书的“数字证书”以用于其他用途,例如电子邮件签名/加密。两者都将在PKI(由Verisign建立)的范围内。
关于java - 文件.keystore和CAKey.pem在SSL中的作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9586304/
如何从一个 PEM 中确定 SSL 证书到期日期,该 PEM 在一个文件 (pem) 上串联了很多证书? 例子: # cat cert.pem -----BEGIN CERTIFICATE-----
我想让运行测试更容易。为了实现这一点,我想提供项目内部测试中使用的 secret 。 我使用以下命令创建了“fullchain.pem”、“privkey.pem”和“dhparams.pem”: o
注意图片中证书的图标图像上写有标准或个人。有什么不同?最近一次我在处理它,我只制作了带有“个人”的图标。我不知道为什么。有什么不同?两者是如何产生的? 最佳答案 我会这样说,因为您的 .p12 文件包
我正在尝试安装这个项目:https://github.com/versatica/mediasoup-demo 它需要 fullchain.pem和 privkey.pem文件。 如何在 Ubuntu
我正在使用 curl 使用公共(public)证书文件从 https 站点下载数据。 系统信息: 操作系统:软呢帽 14 curl : curl 7.30.0 openssl: OpenSSL 1.0
我正在尝试使用 openssl 加密短文本,但我不知道如何继续。更具体地说:我发现一段代码似乎可以工作,但必须从终端执行指令。是的,我知道,存在 system() 函数,但我想避免它,因为它需要文件夹
我正在使用 OpenSSL 将“me.p12”转换为 PEM。当我生成“me.p12”时,我为其设置了密码。 “me.p12”包含私钥和证书。 当我将其转换为 PEM 时,我运行命令: openssl
我正在使用 Amazon 的 EC2 集群来运行 GraphLab。他们想要我的 .pem 文件的位置,这是我的私钥。 搜索后我仍然在ubuntu中找不到该文件。我正在使用 PuTTY。 最佳答案 .
我正在尝试了解 .pem 文件的布局方式。密码短语是如何验证的? .pem 文件如何检查您尝试打开它时使用的密码? 最佳答案 多种不同类型的数据存储在扩展名为.pem 的文件中。所以你的问题不准确。但
我需要生成一个 cert.pem 和 key.pem 文件来使用 Nginx 加密 http 请求。 在 Linux 上,我会执行以下 OpenSSL 命令: openssl req -x509 -n
我必须以 pem 格式提交 CSR。 我已经使用 OpenSSL 生成了 CSR,但在将其转换为 PEM 格式时遇到了困难。 我必须从 example.csr 获取示例 - csr.pem。如何实现?
我知道这是一个与许多其他问题非常相似的问题,但他们都没有给出直接的答案或对我有用的答案...... 我从 Let's encrypt 获得了两个文件: 证书.pem key.pem 我需要让他们进入
首先,我看过this thread但它不相关并且有不同的问题。 我的 Kafka 属性文件中有以下设置片段: ssl.keystore.type=PEM ssl.keystore.key=/path/
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 6 年前。 Improve this q
我想下载 Cpanel 自动生成的 SSL 作为 key.pem 和 cert.pem,我在 Cpanel 中找不到任何下载链接,有什么建议吗? 我曾尝试将证书文本复制到文本文件中并使用它,但没有成功
这个问题在这里已经有了答案: Converting pfx to pem using openssl (5 个答案) 关闭 6 年前。
我想通过 AWS Lambda 使用 pysftp 库连接 EC2。我使用以下代码进行连接。 mysftp = pysftp.Connection( host=Constants.MY_HOS
我有这两个文件(certificate.pem 和private_key.pem),它们由我使用的 API 提供。我需要使用这些文件在 Swift 项目中签署我的 http 请求。 我可以用 Post
我的 Pem 文件就是这种格式。 Bag Attributes localKeyID: friendlyName: test subject=/C=GB/ST=London/L=Soho/O=Righ
我从证书颁发机构获得了这些文件: domain.com.p7b domain.com.crt domain.com.ca-bundle 我尝试了这个小代码: var express = require
我是一名优秀的程序员,十分优秀!