标签: self-signed

具有自签名CA的客户端SSL无法正常工作

我一直在努力解决SSL问题超过1个月.

我们使用openssl生成自己的CA,服务器和客户端证书.我们还在Apache Web服务器上启用了"SSLrequire"(在htaccess中这可能是错误的),这意味着任何尝试通过服务器上的https连接的人都需要提供有效的证书

步骤如下;

  • 生成CA密钥
  • 生成CA CSR
  • 使用CA Key对CA CSR进行签名

所以我们有自己的CA,用于签署我们的服务器和客户端证书.

下一步

  • 生成服务器密钥
  • 生成服务器CSR
  • 使用CA Key签署服务器CSR

所以我们有服务器证书和服务器私钥,我们在服务器上成功安装

接下来我们

  • 生成客户端密钥
  • 生成客户CSR
  • 使用CA Key签署客户CSR

然后,我们将客户端证书与CA证书一起分发给我们的用户.两者都安装在他们的浏览器中.

在尝试连接时,我们得到了"Peer无法识别并信任颁发证书的CA."错误.

我们发现问题是服务器上未安装自签名CA证书.通常,服务器会向尝试连接到它的设备显示可信CA的列表,并且设备必须发送已由服务器提供的任何CA签名的证书.但由于我们的自签名CA证书未安装在服务器上,因此浏览器可以提供服务器可接受的证书.

所以我们在服务器 - 控制面板Hsphere上安装了CA证书.

我们获取了ca证书的内容并将其复制到服务器上的"证书颁发机构文件"文本区域中,并且服务器不会每次都抱怨它"无法更新SSL配置不同的密钥和证书"

CA证书已经自行签名,因此服务器如何说证书和密钥不同.

我们还尝试将CA证书文件和CA密钥文件的内容复制到"证书颁发机构文件"文本区域,但这也不起作用.

正如我所说,我们一直在努力争取一个多月.如果有人能提供帮助,那将非常感激.如果我们需要支付服务费用,请告诉我们.

提前致谢.

ssl client openssl ca self-signed

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

Advanced Rest Client桌面应用程序自签名证书问题

最近Advanced Rest client更改为桌面应用程序而不是chrome extension.早期的浏览器曾经信任,self signed certs但现在这是一个桌面应用程序,因此同样的解决方法是行不通的.

如何信任自签名证书ARC desktop app

self-signed advanced-rest-client

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

如何使用带有HTTPS和自签名服务器证书的AVPlayer?

我有一台服务器使用HTTPS的自签名SSL证书.我将自签名的root证书捆绑到我的应用程序中.我可以NSURLSession通过SecTrustSetAnchorCertificates()-URLSession:didReceiveChallenge:completionHandler:委托方法中使用来使用和验证自签名根证书.

AVPlayer但是,当我尝试使用时,我收到SSL错误并且播放失败.这是我的AVAssetResourceLoader委托实施:

- (BOOL)resourceLoader:(AVAssetResourceLoader *)resourceLoader shouldWaitForResponseToAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
    if ([challenge.protectionSpace.authenticationMethod isEqual:NSURLAuthenticationMethodServerTrust]) {
        SecTrustRef trust = challenge.protectionSpace.serverTrust;
        SecTrustSetAnchorCertificates(trust, (__bridge CFArrayRef)self.secTrustCertificates);

        SecTrustResultType trustResult = kSecTrustResultInvalid;
        OSStatus status = SecTrustEvaluate(trust, &trustResult);

        if (status == errSecSuccess && (trustResult == kSecTrustResultUnspecified || trustResult == kSecTrustResultProceed)) {
            [challenge.sender useCredential:[NSURLCredential credentialForTrust:trust] forAuthenticationChallenge:challenge];
            return YES;
        } else {
            [challenge.sender cancelAuthenticationChallenge:challenge];
            return YES;
        }
    }
    return NO;
}
Run Code Online (Sandbox Code Playgroud)

委托被调用,并且trustResult等同于kSecTrustResultUnspecified(这意味着"受信任,没有明确的用户覆盖"),如预期的那样.但是,播放失败后不久,具有以下内容AVPlayerItem.error:

错误域= NSURLErrorDomain代码= -1200"发生SSL错误,无法与服务器建立安全连接." 的UserInfo = …

https objective-c self-signed ssl-certificate ios

8
推荐指数
1
解决办法
1817
查看次数

如何在iOS 10中安装自签名证书

Apple似乎已经删除了信任在iOS 10中自签名的SSL证书的功能.

我创建了自己的自签名证书,并拥有一个使用我的证书签名的本地Web服务器.我必须在iOS上安装我的证书才能在本地进行测试,因为我开发了一个需要信任我的证书的iOS应用程序.

如何安装自签名证书?

self-signed ssl-certificate ios

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

Flutter Web,向具有自签名证书的服务器发出请求时出现问题

我面临着 Flutter Web 的第一个大问题。

我必须通过对具有自签名 ssl 证书的服务器的后期调用来使用 oauth2 登录。

使用 http 和 dio 客户端发出请求,我收到 net::ERR_CERT_AUTHORITY_INVALID。我在网上找到的唯一方法是使用 HttpClient,它适用于 android 和 IO,但 dart:io 在网络构建中不起作用。有没有办法信任我的 flutter web ssl 证书?

       // My simple line of code
      var response = await client.post(authorizationEndpoint.toString(), body: body, headers: headers);
      // What I am looking for 
      var response = await client.post(authorizationEndpoint.toString(), 
                               body: body, headers: headers, 
                       --->    trustanyCA: true);
Run Code Online (Sandbox Code Playgroud)

self-signed ssl-certificate flutter flutter-web

8
推荐指数
1
解决办法
4755
查看次数

使用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
查看次数

如何在Java密钥库中创建自己的自签名根证书和中间CA?

如何创建要在Java密钥库中导入的自签名根证书和中间CA?

我们将此用于SSL和TLS,稍后用于基于客户端证书的CLIENT-AUTH身份验证.

使用OpenSSL和KeyTool.请帮忙.

openssl certificate ca self-signed

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

使用自签名证书签署PowerShell脚本(并且不使用makecert.exe)

我正在尝试.ps1使用自签名证书签名(用例是我自己在私人开发站写的脚本,所以不需要使用 - 或支付 - 真正的CA).但是,无论我阅读的证书生成和数字签名主题有多少指南,我似乎无法让它工作.

这是我迄今为止所取得的成就:

# Create a certificate to use as trusted root of the signing chain
$root = New-SelfSignedCertificate `
    -Subject "CN=PowerShell Trusted Authority" `
    -FriendlyName "PowerShell Trusted Authority" `
    -KeyUsageProperty Sign `
    -KeyUsage CertSign, CRLSign, DigitalSignature `
    -CertStoreLocation Cert:\LocalMachine\My\ `
    -NotAfter (Get-Date).AddYears(10)

# Create a certificate to use for signing powershell scripts
New-SelfSignedCertificate `
    -Signer $root `
    -Subject "CN=PowerShell Code Signing" `
    -KeyAlgorithm RSA `
    -KeyLength 2048 `
    -Type CodeSigningCert `
    -CertStoreLocation Cert:\LocalMachine\My\

# …
Run Code Online (Sandbox Code Playgroud)

powershell self-signed digital-signature

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

没有互联网连接的WiFi连接设备的最佳做法

我工作的公司生产的设备通过WiFi提供基于Web的设置和操作界面.该设备通常会在不知名的地方使用,因此无法假设现有WiFi网络的存在:设备的WiFi模块因此作为接入点运行,并通过HTTP提供花哨的HTML5 Web应用程序(唯一的选择)可以使用我在2013年选择的WiFi模块,这是最初实现的.

这起初效果很好,但随着网络的发展,它逐渐崩溃.特别是两个问题:

  • Web应用程序的一部分涉及映射,当然,能够在地图上显示"你在这里"标记非常有用 - 但Chrome已经拒绝通过HTTP支持HTML5 Geolocation API(甚至没有明确信任的选项)页面),看起来所有其他浏览器都会效仿.

  • Web应用程序非常大(并且WiFi模块非常慢),所以我使用HTML5应用程序缓存功能在初次使用应用程序后有效地加载即时页面.不幸的是,主流浏览器已经拒绝通过HTTP允许此功能,无论如何该功能已被弃用,并且它的后继者(Service Workers)明确地仅支持HTTPS.

由于原来的WiFi模块不再可用,我不得不重做此功能的硬件和软件.目前可用的模块具有更多的CPU功率和存储(并且成本只有十分之一),因此现在可以做很多事情,例如通过HTTPS提供Web应用程序.我普遍看到这样的设备的建议是获得一个正确的SSL证书,但我不知道这可能在我的情况下如何工作:

  • 当设备实际使用时,通常不会有Internet连接可用,因此无法验证证书.

  • 可以通过IP地址192.168.1.1或LLMNR/mDNS名称访问设备ui.local.不为任何类型的地址提供SSL证书.

  • 我需要它永远工作- 没有机制来更新设备中的证书.即使是10年(许多自签名证书生成器提供的最长有效期)也不够; 我拒绝在设备中构建计划的过时.

也许可以通过向设备添加DNS服务器来进行某种工作,基本上将其作为强制门户,以便可以通过我可以实际购买SSL证书的普通URL来访问它.但是,我发现很多潜在的问题:

  • 如果用户的计算设备设置了静态DNS服务器地址(8.8.8.8或其他),则它会失败,而不是从DHCP接受一个.

  • 如果用户实际上与设备的WiFi连接同时具有Internet连接,则会失败.

  • 如果DNSSEC有效,它将永久失败.

  • 仍然存在证书过期问题.

尽管提出了相反的建议,但似乎只留下了自签名证书作为唯一可行的选择.对他们的一个常见反对意见是"你教导用户忽略有效的安全警告"; 我明白了你的观点,但我应该做些什么呢?

是否有一些我忽略的方法,这会让我的设备继续使用现代浏览器,以及它在2013年的做法?

ssl web-applications self-signed

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

如何通过 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
查看次数