mirror of
https://github.com/XTLS/Xray-core.git
synced 2025-07-23 18:34:14 +00:00
TLS ping: Output cert's signature algorithm & publicKey algorithm
This commit is contained in:
parent
c9a3859495
commit
14066e7dee
1 changed files with 17 additions and 12 deletions
|
@ -40,10 +40,12 @@ func executePing(cmd *base.Command, args []string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
domainWithPort := cmdPing.Flag.Arg(0)
|
domainWithPort := cmdPing.Flag.Arg(0)
|
||||||
fmt.Println("Tls ping: ", domainWithPort)
|
fmt.Println("TLS ping: ", domainWithPort)
|
||||||
TargetPort := 443
|
TargetPort := 443
|
||||||
domain, port, err := net.SplitHostPort(domainWithPort)
|
domain, port, err := net.SplitHostPort(domainWithPort)
|
||||||
if err == nil {
|
if err != nil {
|
||||||
|
domain = domainWithPort
|
||||||
|
} else {
|
||||||
TargetPort, _ = strconv.Atoi(port)
|
TargetPort, _ = strconv.Atoi(port)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,7 +63,7 @@ func executePing(cmd *base.Command, args []string) {
|
||||||
}
|
}
|
||||||
ip = v.IP
|
ip = v.IP
|
||||||
}
|
}
|
||||||
fmt.Println("Using IP: ", ip.String())
|
fmt.Println("Using IP: ", ip.String()+":"+strconv.Itoa(TargetPort))
|
||||||
|
|
||||||
fmt.Println("-------------------")
|
fmt.Println("-------------------")
|
||||||
fmt.Println("Pinging without SNI")
|
fmt.Println("Pinging without SNI")
|
||||||
|
@ -72,7 +74,7 @@ func executePing(cmd *base.Command, args []string) {
|
||||||
}
|
}
|
||||||
tlsConn := gotls.Client(tcpConn, &gotls.Config{
|
tlsConn := gotls.Client(tcpConn, &gotls.Config{
|
||||||
InsecureSkipVerify: true,
|
InsecureSkipVerify: true,
|
||||||
NextProtos: []string{"http/1.1"},
|
NextProtos: []string{"h2", "http/1.1"},
|
||||||
MaxVersion: gotls.VersionTLS13,
|
MaxVersion: gotls.VersionTLS13,
|
||||||
MinVersion: gotls.VersionTLS12,
|
MinVersion: gotls.VersionTLS12,
|
||||||
// Do not release tool before v5's refactor
|
// Do not release tool before v5's refactor
|
||||||
|
@ -98,7 +100,7 @@ func executePing(cmd *base.Command, args []string) {
|
||||||
}
|
}
|
||||||
tlsConn := gotls.Client(tcpConn, &gotls.Config{
|
tlsConn := gotls.Client(tcpConn, &gotls.Config{
|
||||||
ServerName: domain,
|
ServerName: domain,
|
||||||
NextProtos: []string{"http/1.1"},
|
NextProtos: []string{"h2", "http/1.1"},
|
||||||
MaxVersion: gotls.VersionTLS13,
|
MaxVersion: gotls.VersionTLS13,
|
||||||
MinVersion: gotls.VersionTLS12,
|
MinVersion: gotls.VersionTLS12,
|
||||||
// Do not release tool before v5's refactor
|
// Do not release tool before v5's refactor
|
||||||
|
@ -106,16 +108,17 @@ func executePing(cmd *base.Command, args []string) {
|
||||||
})
|
})
|
||||||
err = tlsConn.Handshake()
|
err = tlsConn.Handshake()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("handshake failure: ", err)
|
fmt.Println("Handshake failure: ", err)
|
||||||
} else {
|
} else {
|
||||||
fmt.Println("handshake succeeded")
|
fmt.Println("Handshake succeeded")
|
||||||
printTLSConnDetail(tlsConn)
|
printTLSConnDetail(tlsConn)
|
||||||
printCertificates(tlsConn.ConnectionState().PeerCertificates)
|
printCertificates(tlsConn.ConnectionState().PeerCertificates)
|
||||||
}
|
}
|
||||||
tlsConn.Close()
|
tlsConn.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println("Tls ping finished")
|
fmt.Println("-------------------")
|
||||||
|
fmt.Println("TLS ping finished")
|
||||||
}
|
}
|
||||||
|
|
||||||
func printCertificates(certs []*x509.Certificate) {
|
func printCertificates(certs []*x509.Certificate) {
|
||||||
|
@ -123,7 +126,9 @@ func printCertificates(certs []*x509.Certificate) {
|
||||||
if len(cert.DNSNames) == 0 {
|
if len(cert.DNSNames) == 0 {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
fmt.Println("Allowed domains: ", cert.DNSNames)
|
fmt.Println("Cert's signature algorithm: ", cert.SignatureAlgorithm.String())
|
||||||
|
fmt.Println("Cert's publicKey algorithm: ", cert.PublicKeyAlgorithm.String())
|
||||||
|
fmt.Println("Cert's allowed domains: ", cert.DNSNames)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,13 +139,13 @@ func printTLSConnDetail(tlsConn *gotls.Conn) {
|
||||||
} else if tlsConn.ConnectionState().Version == gotls.VersionTLS12 {
|
} else if tlsConn.ConnectionState().Version == gotls.VersionTLS12 {
|
||||||
tlsVersion = "TLS 1.2"
|
tlsVersion = "TLS 1.2"
|
||||||
}
|
}
|
||||||
fmt.Println("TLS Version:", tlsVersion)
|
fmt.Println("TLS Version: ", tlsVersion)
|
||||||
curveID := *(*gotls.CurveID)(unsafe.Pointer(reflect.ValueOf(tlsConn).Elem().FieldByName("curveID").UnsafeAddr()))
|
curveID := *(*gotls.CurveID)(unsafe.Pointer(reflect.ValueOf(tlsConn).Elem().FieldByName("curveID").UnsafeAddr()))
|
||||||
if curveID != 0 {
|
if curveID != 0 {
|
||||||
PostQuantum := (curveID == gotls.X25519MLKEM768)
|
PostQuantum := (curveID == gotls.X25519MLKEM768)
|
||||||
fmt.Println("Post-Quantum key exchange:", PostQuantum, "("+curveID.String()+")")
|
fmt.Println("TLS Post-Quantum key exchange: ", PostQuantum, "("+curveID.String()+")")
|
||||||
} else {
|
} else {
|
||||||
fmt.Println("Post-Quantum key exchange: false (RSA Exchange)")
|
fmt.Println("TLS Post-Quantum key exchange: false (RSA Exchange)")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue