Проблема HTTPS с прокси-сервером Android с использованием платформы ktorAndroid

Форум для тех, кто программирует под Android
Ответить
Гость
 Проблема HTTPS с прокси-сервером Android с использованием платформы ktor

Сообщение Гость »


Я использую платформу ktor для разработки прокси-сервера на устройстве Android. Сервер работает для http-запросов
Но при использовании https-url я получаю сообщение об ошибке. Ниже приведен журнал с помощью Curl. Я прочитал документацию ktor, касающуюся SSL и сертификатов.
https://ktor.io/docs/ssl.html#self-signed-code
Но я получаю сообщение об ошибке при использовании ключей JKS
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 0
curl: (35) schannel: next InitializeSecurityContext failed: SEC_E_INVALID_TOKEN (0x80090308) - The token supplied to the function is invalid
------обновление
Сейчас у меня нет журнала. Ниже приведен код. Канал приема закрывается после того, как сервер отправляет 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)


Источник: https://stackoverflow.com/questions/781 ... -framework
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»