标签: self-signed

https 模块的 node-forge 自签名证书

操作系统:Windows 10
Node.js 版本:node-v8.11.4-win-x64
node-forge 版本:0.7.7-dev

大家,我在尝试创建 Node.js https 服务器时遇到了困难。
服务器背后的想法是它仅适用于本地环回请求。
考虑到这一点并出于隐私考虑,我想到了在每次服务器重新启动时更新的一次性自签名证书。
根据建议,我尝试使用 node-forge 模块来生成一次性证书。

在https://www.npmjs.com/package/node-forge阅读他们的说明,我得到了一个非常简单的代码:

var https = require('https');
var forge = require('node-forge');
    forge.options.usePureJavaScript = true; 

var pki = forge.pki;
var keys = pki.rsa.generateKeyPair(2048);
var cert = pki.createCertificate();

cert.publicKey = keys.publicKey;
cert.serialNumber = '01';
cert.validity.notBefore = new Date();
cert.validity.notAfter = new Date();
cert.validity.notAfter.setFullYear(cert.validity.notBefore.getFullYear()+1);

var attrs = [
     {name:'commonName',value:'example.org'}
    ,{name:'countryName',value:'US'}
    ,{shortName:'ST',value:'Virginia'}
    ,{name:'localityName',value:'Blacksburg'}
    ,{name:'organizationName',value:'Test'}
    ,{shortName:'OU',value:'Test'}
];
cert.setSubject(attrs);
cert.setIssuer(attrs);
cert.sign(keys.privateKey);

var pem_pkey = pki.publicKeyToPem(keys.publicKey);
var pem_cert = pki.certificateToPem(cert);

console.log(pem_pkey);
console.log(pem_cert);

https.createServer( …
Run Code Online (Sandbox Code Playgroud)

self-signed ssl-certificate node.js

5
推荐指数
1
解决办法
4036
查看次数

如何使用“ Electron.net” API 信任来自主进程的电子应用程序的自签名证书?

目标是在电子应用程序的主流程中自定义证书验证,以便在开发和测试条件下与自签名证书和不匹配的主机名一起使用。APIelectron.net提供了提供对象的选项Session,该对象具有setCertificateVerifyProc方法。但是,我使用该方法注册的回调永远不会被调用。

这里有一个相关的问题:如何信任来自电子应用程序的自签名证书? 然而,该问题所接受的答案仅适用于渲染过程。事实上,在主进程上,事件certificate-error从未被发出。

ssl https certificate-authority self-signed electron

5
推荐指数
0
解决办法
1123
查看次数

将自签名 SSL 证书添加到 HttpURLConnection

我知道还有一些关于同一主题的其他问题,但是这些问题都不等于我的具体问题。

HttpURLConnection在我的 Android 应用程序中,我通过一些 RESTful 端点发出 Http 请求。其中一些端点使用自签名证书,其他端点则不使用。因此,我需要一种方法将自定义 KeyStore 添加到默认 HttpURLConnection 行为。

这是我现在的代码:

        try {
            KeyStore keyStore = getKeyStore(context);

            TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
            trustManagerFactory.init(keyStore);

            KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
            keyManagerFactory.init(keyStore, "pasword".toCharArray());

            SSLContext sslContext = SSLContext.getInstance("TLS");
            sslContext.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(), new SecureRandom());

            HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
        } catch (KeyStoreException | IOException | CertificateException | NoSuchAlgorithmException | UnrecoverableKeyException | KeyManagementException e) {
            e.printStackTrace();
        }
Run Code Online (Sandbox Code Playgroud)

它可以工作,但仅适用于自签名证书,任何其他请求都会产生java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

因此,我正在寻找一种方法让 HttpURLConnection 识别自定义自签名证书而不破坏正常行为。

ssl android self-signed httpurlconnection

5
推荐指数
1
解决办法
4986
查看次数

Apache Camel http4 带有自签名 SSL 证书

我真的很难为与主机名不匹配的自签名服务器证书配置 Apache Camel https4。

[Do. 2020 16 Juli 13:13:19] [DEBUG] org.apache.camel.processor.Pipeline () - Message exchange has failed: so breaking out of pipeline for exchange: Exchange[ID-lvm-cdbservice-01ct-1594888044674-0-15551] Exception: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Run Code Online (Sandbox Code Playgroud)

这就是为什么我创建了一个自定义 HttpClientConfigurer,如 apache Camel http 配置中所述。但是这个配置器似乎不适用于我的路由?!有人知道为什么吗?

在某些时候使用了configureHttpClient方法

[Do. 2020 16 Juli 10:27:25] [INFO ] com.test.SelfSignedHttpClientConfigurer () - Using SelfSignedHttpClientConfigurer...
[Do. 2020 16 Juli 10:27:25] [INFO ] com.test.SelfSignedHttpClientConfigurer () - ... HttpClient configured!
Run Code Online (Sandbox Code Playgroud)

但协议没有改变。这就是为什么我猜它没有用于我的路线。

available protocols [[TLSv1.3, TLSv1.2, TLSv1.1, TLSv1]], …
Run Code Online (Sandbox Code Playgroud)

ssl self-signed apache-camel

5
推荐指数
1
解决办法
4940
查看次数

我一般应该使用自签名证书吗?特别是对于SVN?

使用自签名证书有多安全?据我了解,如果我没有来自权威机构的证书,攻击者可能会伪装成我的服务器.这有很大的风险吗?

我应该为Subversion购买证书吗?

svn ssl self-signed

4
推荐指数
1
解决办法
778
查看次数

自签名证书 - 帮助用户知道他们需要将根CA添加到受信任的证书库

我有一个桌面产品,它使用嵌入式网络服务器,它将使用自签名证书.

有什么东西可以放在一个网页中,可以检测到他们没有将根CA添加到他们的可信列表中,并显示链接或DIV或指示他们如何操作的东西?

我想也许是有安装CA的指令的DIV,以及运行一些测试的Javascript(尝试访问没有内部警告的东西?),如果测试成功,则隐藏DIV.或类似的东西...

来自辉煌的SO社区的任何想法?:)

javascript browser certificate self-signed ssl-certificate

4
推荐指数
1
解决办法
3334
查看次数

Volley SSL - 未验证主机名

我正在开发一个 Android 应用程序,我需要访问一个 HTTPS 地址。我正在使用 Volley 请求我的数据,但现在出现此错误com.android.volley.NoConnectionError: java.io.IOException: Hostname '<address>' was not verified

为了获得 SSL 工厂,我这样做:

private static SSLSocketFactory getSocketFactory() {
    SSLSocketFactory socketFactory = null;


    try {
        final CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
        final BufferedInputStream bis = new BufferedInputStream(sContext.getResources().openRawResource(R.raw.cert)) ;

        Certificate certificate;
        try {
            certificate = certificateFactory.generateCertificate(bis);
        } finally {
            bis.close();
        }

        final String keyStoreType = KeyStore.getDefaultType();
        final KeyStore keyStore = KeyStore.getInstance(keyStoreType);
        keyStore.load(null, null);
        keyStore.setCertificateEntry("ca", certificate);

        final String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
        TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
        tmf.init(keyStore);
        final SSLContext sslContext = …
Run Code Online (Sandbox Code Playgroud)

java ssl android self-signed android-volley

4
推荐指数
1
解决办法
7737
查看次数

如何在 Postman 中使用自签名证书

我正在使用 Postman 来测试我的 API。

当我在 http 中调用我的服务器时,它在 dev env 中运行良好。但是在验收测试平台上,服务器在 https 中,我们使用的是自签名证书。

当我尝试通过 Postman 拨打电话时,我收到“无法得到任何响应”,它写在 SSL 连接被阻止的下面,并带有指向此页面的链接。

然而,正如评论中所通知的,这不再适用于自签名证书和最新的 chrome 版本。有关信息,我正在使用版本 59.0.3071.115(构建官方)(64 位)

当我进入谷歌设置,然后证书: chrome://settings/certificates 我尝试导入授权证书,我收到一个错误弹出框,说我的授权不是证书授权,它不允许我导入它。

当我在 linux 上时,我尝试做那里详述的事情:https : //superuser.com/questions/1201552/not-a-certification-authority-while-importing-self-signed-certificate 但即使我看到我打电话时的证书

certutil -d sql:$HOME/.pki/nssdb -L 
Run Code Online (Sandbox Code Playgroud)

它仍然不允许我在谷歌中导入它。

那么如何在 linux 下通过 Postman 使用自签名证书呢?


编辑:我使用的是 Chrome 网上商店中缺少 SSL 支持的版本。下载了独立的,正如@Pratik Mandrekar 所写,它运行良好!

ssl google-chrome self-signed postman

4
推荐指数
1
解决办法
3355
查看次数

使用gitlab CI构建docker镜像并推送到自签名的https nexus repo

我有一个gitlab CI设置,我想构建和推送docker镜像,第一个问题是我的nexus repo不是https.实际的错误消息是这样的:

来自守护程序的错误响应:获取http://some.host:port/v2/:http:server向HTTPS客户端发出HTTP响应

要构建docker镜像我们使用docker:latestimage,我找不到将主机添加为不安全注册表的方法.gitlab-ci.yml

所以自我签署了我的nexus存储库,希望它能解决,但它也没有用,并提供以下错误消息:

来自守护程序的错误响应:获取https://some.host:port/v2/:x509:由未知权限签名的证书

这是我目前的CI设置:

image: docker:latest

services:
  - docker:dind

before_script:
  - docker info
  - docker login -u USER -p PASSWORD some.host:port

stages:
  - build

build-image:
  stage: build
  script:
    - docker build -t some.host:port/image:alpine .
    - docker push some.host:port/image:alpine
  only:
    - master
  when: manual
Run Code Online (Sandbox Code Playgroud)

那么有一个简单的解决方案或现有的docker镜像我可以配置不安全的注册表可能是一些docker magic with command line我真的需要创建一个自己的图像来解决这个问题吗?

self-signed gitlab docker

4
推荐指数
1
解决办法
2333
查看次数

在 Ubuntu 上使用 Firefox 59 不受信任的自签名 *.dev 证书

我在 Ubuntu 上使用 Firefox 59.0.1,在访问我的开发环境时看到以下错误,该环境位于自签名 SSL 证书后面。

您的连接不安全

crmpicco.dev 的所有者错误地配置了他们的网站。为保护您的信息不被盗用,Firefox 未连接到本网站。

该站点使用 HTTP 严格传输安全 (HSTS) 来指定 Firefox 只能安全地连接到它。因此,无法为此证书添加例外。

了解更多…

报告此类错误以帮助 Mozilla 识别和阻止恶意站点

crmpicco.dev 使用无效的安全证书。

该证书不受信任,因为它是自签名的。

错误代码:SEC_ERROR_UNKNOWN_ISSUER

我已将“crmpicco.dev”添加到 security.tls.insecure_fallback_hosts 并将 security.enterprise_roots.enabled 设置为 true,重新启动 Firefox 但这没有任何效果。

我知道 Chrome 有他们的 "badidea"/"thisisnotsafe" 解决方法,我知道这并不理想,但它至少有效 - 而我还没有找到与 Firefox 等效的方法。

解决这个问题的方法是什么?即使我拥有的证书是 2018 年 2 月的,我是否需要生成新的自签名证书。

我在这里尝试了许多问题并且 Mozilla 支持没有效果。

ssl firefox self-signed hsts

4
推荐指数
1
解决办法
1555
查看次数