我想我的SSL证书搞砸了一点.我们正在使用SSL证书为所有OpenVPN客户端(使用easy-rsa工具包生成完美).
现在我想在OpenVPN主机上为Web服务器使用相同的证书
所有密钥长4096位.
我的想法是mybe的使用目的对于apache是错误的,但我不太确定.
root@howard~# openssl x509 -in howard.example.com.crt -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 15 (0xf)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=AT, ST=STMK, L=Graz, O=Bee Company, OU=Root CA, CN=example.com/name=rootca/emailAddress=root@bee.example.com
Validity
Not Before: Aug 13 12:36:41 2013 GMT
Not After : Aug 11 12:36:41 2023 GMT
Subject: C=AT, ST=STMK, L=Graz, O=example.com.at, OU=changeme, CN=howard.example.com/name=howard.example.com/emailAddress=root@example.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (4096 bit)
Modulus:
NOTHING_TO_READ_HERE :)
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment: …
Run Code Online (Sandbox Code Playgroud) 我写了下面的代码.已成功导入证书.谁能告诉我获得例外的原因是什么?我试图连接一个IP https:// xxxx但获得异常.我尝试了两件事
1)通过证书2)下载证书并使用keytool将其添加到java信任库.对我来说,没有人工作正常.
package com.dell;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.GeneralSecurityException;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
public class HttpURLConnectionExample {
private final String USER_AGENT = "Mozilla/5.0";
public static void main(String[] args) throws Exception {
HttpURLConnectionExample http = new HttpURLConnectionExample();
System.out.println("Testing 1 - Send Http GET request");
http.sendGet();
System.out.println("\nTesting 2 - Send Http POST request");
http.sendPost();
}
// HTTP GET request
private void sendGet() throws Exception {
URL …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在内核3.13.0-32-generic的Ubuntu 14.04 Linux(64位)上建立一个支持SSL的mysql服务器5.5.38-0ubuntu0.14.04.1.
我允许远程访问mysql并更改/etc/mysql/my.cnf以支持ssl ...
ssl=1
ssl-ca=/etc/mysql/ca-cert.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem
Run Code Online (Sandbox Code Playgroud)
我生成了证书......
openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem
openssl req -newkey rsa:2048 -days 3560 -nodes -keyout server-key.pem > server-req.pem
openssl rsa -in server-key.pem -out server-key.pem
openssl x509 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem
openssl req -newkey rsa:2048 -days 3650 -nodes -keyout client-key.pem > client-req.pem
openssl rsa -in client-key.pem -out client-key.pem
openssl x509 -req -in client-req.pem …
Run Code Online (Sandbox Code Playgroud) 我有一个在Dropwizard上运行的服务器(即为其Web服务器运行Jetty).我正在尝试为它设置SSL.
我有一个由CA签署的证书(特别是Comodo,通过Namecheap).我安装了根证书和中间证书,然后安装了我自己的证书(使用Comodo支持的说明.但是,当我第一次尝试连接到我的服务器时(它启动正常),我收到一个错误:( sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
当然堆栈跟踪更长,但这是根本原因.)
我已经尝试过搜索这个错误,并且一直有人说这应该只发生在自签名证书上,而我的证书不是.尽管如此,我尝试下载InstallCert.java程序,该程序似乎源自Sun博客上的一篇(现已删除)文章.具体来说,我从这个页面获得了学位.
在几次(失败的)尝试通过命令行使其工作(这是另一次的讨论)后,我最终让它运行正常.现在我从程序得到的输出是:
Loading KeyStore C:\Program Files\Java\jdk1.8.0_05\jre\lib\security\cacerts...
Opening connection to localhost:8443...
Starting SSL handshake...
Exception in thread "main" java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:150)
at java.net.SocketInputStream.read(SocketInputStream.java:121)
at sun.security.ssl.InputRecord.readFully(InputRecord.java:465)
at sun.security.ssl.InputRecord.read(InputRecord.java:503)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:954)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1343)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1371)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1355)
at com.aw.ad.util.InstallCert.main(InstallCert.java:98)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
Process finished with exit code 1
Run Code Online (Sandbox Code Playgroud)
同时,如果我用我的网站打开窗口,它会再次传递unable to find …
我有一个公开公开的.net WEB API,还有一个使用该API的Xamarin Forms应用程序,该应用程序由于要管理的数据而需要非常安全。
我将为WEB API创建一个HTTP证书。Xamarin Forms应用程序将具有登录名/密码,以针对本地Active Directory进行验证。通过一个/ token端点,并在所有端点上使用Authorize属性来确保每个HTTP调用中都包含不记名令牌,我使用以下方法实现了这一点:
我基于此实现:http : //bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/
另外,客户要求我们提供客户证书认证,我不知道这是如何工作的。1.我需要向Xamarin项目添加证书,对吗?如何添加?我如何产生它?2.在Web API中,我需要验证每个http调用是否都附加了证书。我发现了这一点,但不确定是否会起作用:http : //www.razibinrais.com/secure-web-api-with-client-certificate/
但是,在调查此问题时,我还发现了有关证书固定的问题,这本质上是安全性,但反过来说,这意味着Xamarin APP将验证服务器证书是否与正确的服务器(或类似的服务器)相关联,因此没有人可以在中间进攻。我在这里找到了实施方法:https: //thomasbandt.com/certificate-and-public-key-pinning-with-xamarin
问题是:1.我两个都需要吗?
在此过程中,我还需要研究什么?
我正在使用 spring boot 构建基于云的微服务架构。我们只使用嵌入式容器,它是用于 spring boot 的 tomcat。此外,我们还向 jvm 密钥库添加了证书。
为了使它更简单,我只创建了两个 Spring Boot 应用程序。
1) Spring boot Eureka Server
2) Spring boot Eureka client
两者都具有与上述相同的配置,当我在 https 上启动 Eureka 服务器时,它成功启动而没有任何问题,之后我启动了 Eureka 客户端,运行良好,直到它请求注册到 Eureka 服务器,然后它开始失败。
有趣的是,当我将 Eureka 服务器保持在非安全端口上,即保持在 http 上时,我所有启用 ssl 的 eureka 客户端都可以毫无问题地连接,但我的架构中并不真正需要它,因为我也使用 zuul 作为单个入口点我所有的微服务。
当它是 http 时一切正常,但在启用 https 和 SSL 时它开始失败。
这是我的 Eureka 服务器配置。
eureka.instance.hostname= localhost
eureka.client.registerWithEureka= false
eureka.client.fetchRegistry= false
server.port= 8761
server.ssl.enabled = true
server.ssl.key-store=classpath:ssl.keystore
server.ssl.key-store-password=changeit
and my Eureka Client Configuration.
server.port=8181
spring.application.name=my-client
eureka.instance.hostname=localhost
eureka.instance.securePort = 8181
eureka.instance.securePortEnabled = …
Run Code Online (Sandbox Code Playgroud) ssl-certificate spring-boot spring-cloud netflix-eureka spring-cloud-netflix
我正在尝试实现一个自定义X509TrustManager
,该自定义告诉用户有关证书的信息,并使他们能够在出现问题的情况下继续使用服务器。
我已将几乎所有内容连接在一起,并开始针对badssl.com上的各种证书进行测试。
当我在 Safari 中访问expired.badssl.com时,我看到三个证书:
* COMODO RSA Certification Authority
* COMODO RSA Domain Validation Secure Server CA
* *.badssl.com
Run Code Online (Sandbox Code Playgroud)
我的应用程序获得了完整的链。
但是,当我访问wrong.host.badssl.com时,Safari 仍然显示三个证书,但我的应用程序只看到两个:
* DigiCert Global Root CA (Not in the array passed to the method!)
* DigiCert SHA2 Secure Server CA
* *.badssl.com
Run Code Online (Sandbox Code Playgroud)
我假设我可以使用“DigiCert SHA2 Secure Server CA”证书中的“Issuer”名称以某种方式找到根证书,但我在哪里找到它?
我使用以下代码将证书转换为公钥并传递给 JwtConsumer:
jwt = "eU13VUDPQsLv2fvbCPEyeuQubditVOguIa2UWvaMhx2ES7cMlTL8F6IgplgpG_H7bXpduPnFUncn7zUYRXmvw_Bts8EfqICeGa5db6RGmofeA01OqowgCfxhWLwmU786riJIT0twMFe...............................BzR7DOvqsahbsx93yKqB_5Q";
// read public key from a file or config or something
String publicKeyPEM =
"-----BEGIN CERTIFICATE-----\n" +
"MIIFuDCCBKCgAwIBAgIQXQ/D2sE/XdZYvdViF83mMzANBgkqhkiG9w0BAQsFADB+\n" +
......................................................................................................... "saQRa7TBj6gAdlYwJVR+4hpLngANpwAG+bXHuEs+Ns/dE/s+b7aUb8/IJTWNtaaQ\n" +
"lMvr/4xtT6ZNCiaIM3uvIvzHqPxCn3sWa94FP9FIg3mbIia1ZbUx8NyMpETOjxaO\n" +
"X242VTjKf7mLCqibyn3kj93zZjgNa0AlbF/QdE9z4tQ58BwoDVlNK4mGv7Uq2nca\n" +
"2qTrgWcVVKyhKMnytiQ4LTs5O45R/YNbnEH7CA==\n" +
"-----END CERTIFICATE-----";
RsaKeyUtil rsaKeyUtil = new RsaKeyUtil();
PublicKey publicKey = rsaKeyUtil.fromPemEncoded(publicKeyPEM);
// create a JWT consumer
JwtConsumer jwtConsumer = new JwtConsumerBuilder()
.setRequireExpirationTime()
.setVerificationKey(publicKey)
.build();
// validate and decode the jwt
JwtClaims jwtDecoded = jwtConsumer.processToClaims(jwt);
Run Code Online (Sandbox Code Playgroud)
但是,在创建 PublicKey 实例时出现以下错误。
Starting Applicationjava.security.InvalidKeyException: IOException: ObjectIdentifier() -- data isn't an object ID …
Run Code Online (Sandbox Code Playgroud) 我正在制作一个需要从WebSocket安全服务器接收实时消息的程序.
我尝试使用JavaScript执行此任务,它工作得很漂亮!
但JavaScript无法满足我的项目需求.所以我想在Python中做同样的事情.但没有成功.
我正在努力解决的错误是:
[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败(_ssl.c:777)
我认为JavaScript没有这个问题,因为它使用浏览器来验证连接.
我在用什么:
我真的不知道该怎么办.我已经搜索了很多.
我可以通过更改代码来解决这个问题吗?
我应该使用另一个lib来建立连接吗?
是Python还是Anaconda的问题?
这是一些我无法弄清楚的新手错误吗?
这是我的Python代码:
import websocket
import websocket
import threading
import time
def on_message(ws, message):
print(message)
def on_error(ws, error):
print(error)
def on_close(ws):
print("### closed ###")
def on_open(ws):
def run(*args):
for i in range(3):
time.sleep(1)
data = ws.recv()
print(data)
time.sleep(1)
ws.close()
print("thread terminating...")
thread.start_new_thread(run, ())
websocket.enableTrace(True)
ws = websocket.WebSocketApp("wss://stream.binance.com:9443/ws/bnbbtc@ticker",
on_message = on_message,
on_error = on_error,
on_close = on_close)
ws.on_open = on_open
ws.run_forever()
Run Code Online (Sandbox Code Playgroud)
如果有人有兴趣,这是我的JavaScript代码:
var socket = new …
Run Code Online (Sandbox Code Playgroud) 我在我的mac中安装并配置了Charles代理.
我可以浏览所有http网站并查看Charles的请求,但我无法浏览https网站,我无法连接
Safari无法打开页面,因为它无法建立安全连接.
我已经在Charles中提到了SSL证书,但所有https连接都失败了
ssl-certificate ×10
ssl ×8
java ×3
certificate ×2
apache ×1
dropwizard ×1
ios ×1
jose4j ×1
jwt ×1
linux ×1
macos ×1
mysql ×1
python ×1
python-3.x ×1
security ×1
spring-boot ×1
spring-cloud ×1
ubuntu-14.04 ×1
websocket ×1
xamarin ×1