Quantcast
Channel: Active questions tagged https - Stack Overflow
Viewing all articles
Browse latest Browse all 1534

Https Issue with Android proxy server using ktor framework

$
0
0

I am using ktor framework to develop a proxy server on Android device. The server works for http requestsBut i get error when using https url. The following is the log with curl. I read the ktor docs regarding ssl and certifigtes.https://ktor.io/docs/ssl.html#self-signed-code

But i get error about use of JKS keys

curl -v -x http://aaa:sss@192.168.0.100:2222 https://www.google.com

*   Trying 192.168.0.100:2222...* Connected to 192.168.0.100 (192.168.0.100) port 2222 (#0)* allocate connect buffer* Establish HTTP proxy tunnel to www.google.com:443* Proxy auth using Basic with user 'aaa'> CONNECT www.google.com:443 HTTP/1.1> Host: www.google.com:443> Proxy-Authorization: Basic > User-Agent: curl/7.83.1> Proxy-Connection: Keep-Alive>< HTTP/1.1 200 OK< Content-Type: application/octet-stream<* Proxy replied 200 to CONNECT request* CONNECT phase completed* schannel: disabled automatic use of client certificate* ALPN: offers http/1.1* schannel: next InitializeSecurityContext failed: SEC_E_INVALID_TOKEN (0x80090308) - The token supplied to the function is invalid* Closing connection 0curl: (35) schannel: next InitializeSecurityContext failed: SEC_E_INVALID_TOKEN (0x80090308) - The token supplied to the function is invalid

------updateRightnow i don't' have any log. Below is the code. Receivechannel closes after server sends 200 HTTP OK

val tcpSocketBuilder = aSocket(ActorSelectorManager(Dispatchers.IO)).tcp()

val server: Socket?try {    //end point    server = tcpSocketBuilder.connect(call.request.host(), call.request.port())} catch (e: Exception) {    Log.v(TAG,"jothi Failed to connect to ${call.request.host()}:${call.request.port()}\n\t${e.printStackTrace()}")    return}Log.v(TAG,"jothi Connected to ${call.request.host()}:${call.request.port()}")val successConnectionString ="HTTP/1.1 200 OK\r\nServer-test: https-proxy\r\n\r\n"call.respondBytesWriter(status = HttpStatusCode.OK){successConnectionString}Log.v(TAG,"jothi response send ")val serverReader = server.openReadChannel()val serverWriter = server.openWriteChannel()delay(20)            val readChannel: ByteReadChannel = call.receiveChannel()            val size = readChannel.availableForRead            val byteArray: ByteArray = ByteArray(size)readChannel.readFully(byteArray,0,size)           Log.v(TAG,"jothi channel is closed for read  " +readChannel.isClosedForRead)            Log.v(TAG,"jothi read size " +size)

-----TLS Config-It is a proxy so i want to tunnel the https. But after connect the client closes channel.The ssl key is not real. For testing only. It works when i connect from browser with https://192.168.0.100:2222

val pass = "testpass" //keystore passwordval alias = "certificateAlias" //certifigate alias

val filedir = applicationContext.getExternalFilesDir(null) //app specific filesval destfolder = File(filedir, "jothi")if (!destfolder.exists()) {    if (!destfolder.mkdirs()) {        Log.v(TAG, "jothi Directory not created")    }}val keyStoreFile = File(filedir,"keystore.Jks")//keystore with certifigatesval keystore = buildKeyStore {    certificate(alias) {        hash = HashAlgorithm.SHA256        sign = SignatureAlgorithm.ECDSA        keySizeInBits = 256        password = pass    }}keystore.saveToFile(keyStoreFile, pass)

Viewing all articles
Browse latest Browse all 1534

Trending Articles