Skip to content

Instantly share code, notes, and snippets.

@shelajev
Created April 23, 2020 17:29
Show Gist options
  • Save shelajev/07549e0fa84ce6f365065f1ecf824d42 to your computer and use it in GitHub Desktop.
Save shelajev/07549e0fa84ce6f365065f1ecf824d42 to your computer and use it in GitHub Desktop.
import java.net.MalformedURLException;
import java.net.URL;
import java.security.cert.Certificate;
import java.io.*;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLPeerUnverifiedException;
public class Curl {
private final String url;
public Curl(String url) {
this.url = url;
}
public static void main(String[] args)
{
String url = "https://www.graalvm.org/";
if(args.length > 0) {
url = args[0];
}
new Curl(url).get();
}
private void get(){
URL url;
try {
url = new URL(this.url);
HttpsURLConnection con = (HttpsURLConnection)url.openConnection();
//dumpl all cert info
print_https_cert(con);
//dump all the content
print_content(con);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private void print_https_cert(HttpsURLConnection con){
if(con!=null){
try {
System.out.println("Response Code : " + con.getResponseCode());
System.out.println("Cipher Suite : " + con.getCipherSuite());
System.out.println("\n");
Certificate[] certs = con.getServerCertificates();
for(Certificate cert : certs){
System.out.println("Cert Type : " + cert.getType());
System.out.println("Cert Hash Code : " + cert.hashCode());
System.out.println("Cert Public Key Algorithm : "
+ cert.getPublicKey().getAlgorithm());
System.out.println("Cert Public Key Format : "
+ cert.getPublicKey().getFormat());
System.out.println("\n");
}
} catch (SSLPeerUnverifiedException e) {
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
}
}
}
private void print_content(HttpsURLConnection con){
if(con!=null){
try {
System.out.println("****** Content of the URL ********");
BufferedReader br =
new BufferedReader(
new InputStreamReader(con.getInputStream()));
String input;
while ((input = br.readLine()) != null){
System.out.println(input);
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
FROM oracle/graalvm-ce:20.0.0-java11 as build
RUN gu install native-image
WORKDIR /app
RUN curl -L -o musl.tar.gz https://github.com/gradinac/musl-bundle-example/releases/download/v1.0/musl.tar.gz && \
tar -xvzf musl.tar.gz
ADD Curl.java .
RUN javac Curl.java
RUN native-image \
--verbose \
--no-server \
--no-fallback \
--static \
--enable-https \
--enable-all-security-services \
-H:UseMuslC=bundle/ \
-H:Name=curl \
Curl
FROM scratch
COPY --from=build /app/curl .
#ENTRYPOINT ["./curl"]
ENTRYPOINT ["./curl", "https://wrong.host.badssl.com/"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment