标签: self-signed

使用pyopenssl创建自签名证书

我正在尝试使用pyopenssl生成ac自签名X509v3 CA证书.我想要添加扩展权限密钥标识符(AKID)与包含主题密钥标识符(SKID)的keyid.

但我的以下代码块不会将SKID复制到AKID而是抛出异常.

代码如下

import OpenSSL

key = OpenSSL.crypto.PKey()
key.generate_key(OpenSSL.crypto.TYPE_RSA, 2048)

ca = OpenSSL.crypto.X509()
ca.set_version(2)
ca.set_serial_number(1)
ca.get_subject().CN = "ca.example.com"
ca.gmtime_adj_notBefore(0)
ca.gmtime_adj_notAfter(24 * 60 * 60)
ca.set_issuer(ca.get_subject())
ca.set_pubkey(key)
ca.add_extensions([
  OpenSSL.crypto.X509Extension("basicConstraints", True,
                               "CA:TRUE, pathlen:0"),
  OpenSSL.crypto.X509Extension("keyUsage", True,
                               "keyCertSign, cRLSign"),
  OpenSSL.crypto.X509Extension("subjectKeyIdentifier", False, "hash",
                               subject=ca),
  OpenSSL.crypto.X509Extension("authorityKeyIdentifier", False, "keyid:always",issuer=ca)
  ])
ca.sign(key, "sha1")
open("MyCertificate.crt.bin", "wb").write(
            OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_ASN1, ca))
Run Code Online (Sandbox Code Playgroud)

抛出的异常如下

Traceback (most recent call last):
  File "C:\Documents and Settings\Administrator\Desktop\Certificate\certi.py", line 21, in <module>
    OpenSSL.crypto.X509Extension("authorityKeyIdentifier", False, "keyid:always",issuer=ca)
Error: [('X509 V3 routines', 'V2I_AUTHORITY_KEYID', 'unable to get issuer keyid'), ('X509 V3 routines', …
Run Code Online (Sandbox Code Playgroud)

openssl pyopenssl self-signed x509certificate python-2.7

7
推荐指数
1
解决办法
6241
查看次数

没有以前的互联网连接,无法验证Android自签名证书

使用SSL基础架构:

我们有一个有效的客户端/服务器设置,其中Android版本4.2和4.4的手机充当客户端,必须通过其自签名SSL证书验证服务器.

问题:

只要设备在尝试连接之前至少有一次Internet访问权限,服务器证书验证就会起作用.但是,如果执行恢复出厂设置且设备直接连接到没有Internet连接的专用网络,则证书验证将失败.

重现行为:

  1. 出厂重置手机
  2. 重新启动而不选择连接到具有Internet访问权限的WiFi
  3. 尝试验证自签名SSL证书 - > FAILS
  4. 连接到可上网的WiFi
  5. 重新连接到原始专用网络
  6. 尝试验证自签名SSL证书 - > WORKS

从技术上讲,设备不应该需要Internet访问来验证自签名证书.在进行任何SSL服务器验证之前,是否存在某种必须加载的黑名单?我可以阻止这种行为吗?

创建SSL上下文:

    //Using a client certificate
    String password = "clientpass";
    KeyStore keyStore = KeyStore.getInstance("PKCS12");
    InputStream is = context.getResources().openRawResource(R.raw.client);
    keyStore.load(is, password.toCharArray());
    is.close();
    KeyManagerFactory kmf = KeyManagerFactory.getInstance("X509");
    kmf.init(keyStore, password.toCharArray());
    KeyManager[] keyManagers = kmf.getKeyManagers();


    // Using self signed certificate
    CertificateFactory cf = CertificateFactory.getInstance("X.509");
    is = context.getResources().openRawResource(R.raw.cacert);
    InputStream caInput = new BufferedInputStream(is);
    Certificate ca;
    try {
        ca = cf.generateCertificate(caInput);
        Log.i("CA","ca=" + ((X509Certificate) ca).getSubjectDN());
    } finally {
        caInput.close(); …
Run Code Online (Sandbox Code Playgroud)

ssl https android certificate self-signed

7
推荐指数
1
解决办法
8151
查看次数

在Ubuntu上打开CA私钥时出错

我试图在Ubuntu 14.04 上使用OpenSSL 创建一个自签名证书.当我输入命令时,我收到以下错误:openssl ca -in tempreq.pem -out server_crt.pem

Using configuration from /root/myCA/caconfig.cnf  
**Error opening CA private key** ~/myCA/private/cakey.pem  
139754719667872:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('~/myCA/private/cakey.pem','r')  
139754719667872:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:  
unable to load CA private key
Run Code Online (Sandbox Code Playgroud)

我已经验证该nano ~/myCA/private/cakey.pem命令会打开该cakey.pem文件,并且已启用此文件的读取权限.

任何帮助将不胜感激.谢谢!

ubuntu openssl self-signed

7
推荐指数
1
解决办法
2万
查看次数

如何通过 HTTPS 为 Vue 应用程序提供本地开发服务

在进行本地开发时,我需要通过 HTTPS 为 vue 应用程序提供服务。

该应用程序正在提供:npm run serve它运行:vue-cli-service serve

我试图创建一个vue.config.js文件并向其中添加以下内容:

module.exports = {
    devServer: {
        port: 8080,
        https: true,
    }
}
Run Code Online (Sandbox Code Playgroud)

这导致控制台错误在Chrome V75,如以下情况:GET https://192.168.0.71:8080/sockjs-node/info?t=1564339649757 net::ERR_CERT_AUTHORITY_INVALID我猜这是Chrome的说,设置时使用的证书httpstrue是不是从一个有效的CA(也许是某种形式的自签名的东西在后台要去?)

我怎样才能解决这个问题?通过“让我们加密”生成证书可能是要走的路吗?

另一方面,我还使用 生成了一个根 CA 私钥,openssl genrsa -des3 -out rootCA.key 2048并使用 生成了一个自签名证书openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem,但我不确定如何告诉vue-cli-service尝试使用这些。但是,如果自签名证书ERR_CERT_AUTHORITY_INVALID在 Chrome 中导致错误,那么追求这条路线就没有多大意义

https self-signed vue.js tls1.2

7
推荐指数
2
解决办法
5689
查看次数

SAML 2.0自签名证书

是否可以使用自签名证书签署SAML 2.0帖子?我负责使用SAML 2.0与供应商实施新的SSO程序,我们试图确定我们是否可以使用自签名证书签署SAML帖子,或者我们是否需要购买一个.

如果我们可以使用自签名证书,服务提供商是否需要执行任何其他步骤来验证签名?我们正在创建SAML 2.0帖子作为身份提供商.

提前致谢.

certificate self-signed saml-2.0

6
推荐指数
1
解决办法
5208
查看次数

从Java客户端到.NET服务器进行SSL连接时出错

我正在学习SSL,在这个过程中,我试图在.NET服务器和Java客户端之间创建SSL连接.我为此目的使用自签名证书.我不想在Java中使用标准密钥库,因此我创建了一个自定义密钥库并将其加载.

我使用以下步骤生成证书和要在.NET服务器端使用的pfx文件.

  1. 在Windows上使用以下命令生成cerficiate.

    makecert -r -pe -sr"localhost" - $ individual -n"CN = localhost"-sv .pvk -r localhost.cer

  2. 将其转换为.pfx,以便我可以在.NET服务器应用程序上加载此证书.

  3. 将.cer文件导出为.pem(Base64格式).

  4. 获取.cer文件(上述证书的公共组件)并使用以下命令创建一个.jks文件(JavaKeyStore)以用作Java客户端.

    keytool\-import\-v\-trustcacerts\-alias 0\-file <(openssl x509 -in localhost.pem)\ -keystore mystore.jks\-storetype JKS\-storepass ez24get

  5. 在Java客户端应用程序中加载此.jks并使用以下代码启动连接

    FileInputStream fis = new FileInputStream("res/myjksstore.jks");
    KeyStore trusted = KeyStore.getInstance("JKS");
    trusted.load(fis, "ez24get".toCharArray());           
    
    TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
    trustManagerFactory.init(trusted);
    
    SSLContext context = SSLContext.getInstance("SSL");
    context.init(null, trustManagerFactory.getTrustManagers(), new SecureRandom());
    
    Socket socket = context.getSocketFactory().createSocket("localhost", 443);
    
    String str = "abc123";
    
    socket.getOutputStream().write(GeneralUtil.toByta(str.length()));
    socket.getOutputStream().write(str.getBytes());
    
    socket.setKeepAlive(true);
    
    Run Code Online (Sandbox Code Playgroud)

但是当我尝试将数据写入套接字时,我在服务器端收到以下错误

System.ComponentModel.Win32Exception:客户端和服务器无法通信,因为它们没有通用的算法

我的服务器代码如下所示......

X509Certificate cert = new X509Certificate("localhost.pfx","abc123");

TcpListener listener = new TcpListener(IPAddress.Loopback,443); listener.Start(); …

.net java ssl self-signed x509certificate

6
推荐指数
1
解决办法
597
查看次数

没有对等证书异常 - 具有自签名证书的Volley和Android

我正在尝试让我的应用通过https与我的服务器通信.由于我不想付费以获得由受信任的CA签署的服务器证书,因此解决方案是使用自签名证书.

所以,我创建了我的caconfig.cnf如下:

[ ca ]
default_ca              = CA_default                    # The default ca section

[ CA_default ]
dir                     = ./demoCA                      # top dir
database                = $dir/index.txt                # index file.
new_certs_dir           = $dir/newcerts                 # new certs dir

certificate             = $dir/cacert.pem               # The CA cert
serial                  = $dir/serial                   # serial no file
private_key             = $dir/private/cakey.pem        # CA private key
RANDFILE                = $dir/private/.rand            # random number file

default_days            = 365                           # how long to certify for
default_crl_days        = 30                            # how long before next …
Run Code Online (Sandbox Code Playgroud)

https android self-signed node.js android-volley

6
推荐指数
1
解决办法
1142
查看次数

主题备用名称不会复制到签名证书

我使用自签名CA证书来签署其他证书.对于某些证书,我需要指定主题替代名称.我可以在请求生成期间指定它们(openssl req ...),我在.csr文件中看到它们.然后我使用CA证书进行签名

openssl x509 -req -extensions x509v3_config -days 365 -in ${name}.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out ${name}.crt
Run Code Online (Sandbox Code Playgroud)

以及openssl.cnf文件中的下一节:

[ x509 ]
x509_extensions = x509v3_config

[ x509v3_config ]
copy_extensions = copy
Run Code Online (Sandbox Code Playgroud)

但我在.crt文件中看不到SAN.

我知道有关命令的解决方案,openssl ca ...但我没有有效的[ca]部分,我不想复制/粘贴它而不深入了解它的作用.所以我希望存在另一个带openssl x509 ...命令的解决方案.

ssl openssl ca self-signed

6
推荐指数
2
解决办法
2885
查看次数

如何检查证书是否自签名?

我正在使用C#.NET,需要在Windows证书库中安装一堆证书.

我需要检查哪些证书是根证书(即自签名),因此我可以将它们安装到"受信任的根证书"存储中.

我正在使用标准X509Certificate2课程.我现在的想法是,以检查是否IssuerSubject是相同的.

我注意到,X509Certificate2Issuer- IssuerNameSubject- SubjectName.

它是更好地对比IssuerSubject,或者IssuerNameSubjectName?或者它真的不重要吗?

此外,这是一种可靠的方法还是我会更好地使用另一种方法?

.net c# certificate self-signed x509certificate2

6
推荐指数
1
解决办法
3070
查看次数

信任自签名证书CentOS 7

我正在为开发服务器生成一个自签名证书,但我需要它才能被信任才能使用一些将使用该证书的工具.

这是我尝试过的:

openssl req -newkey rsa:2048 -x509 -nodes -keyout /etc/ssl/private/server.key -new -out /etc/ssl/certs/server.crt -reqexts v3_req -extensions v3_req -config /vagrant/openssl.san.conf -sha256 -days 1825

ln --symbolic /etc/ssl/certs/server.crt /etc/pki/ca-trust/source/anchors/server.crt

update-ca-trust extract
Run Code Online (Sandbox Code Playgroud)

在尝试运行update-ca-trust命令之后,我尝试使用grepping ca-bundle.crt文件获取内容,server.crt但它不在那里.

我也尝试过复制文件而不是制作符号链接,但这也不起作用.

证书是正确创建的,适用于Apache,但它会产生自签名错误:

[vagrant@localhost certs]$ curl --head https://localhost/
curl: (60) Issuer certificate is invalid.
More details here: http://curl.haxx.se/docs/sslcerts.html
Run Code Online (Sandbox Code Playgroud)

如何在服务器的命令行上信任我的自签名证书?

certificate ca self-signed ssl-certificate centos7

6
推荐指数
1
解决办法
2377
查看次数