Rename all crates, CLI commands, constants, type names, doc comments, and documentation from wraith to alknet. Includes wire-protocol changes: ALPN wraith-ssh -> alknet-ssh, reserved destination prefix wraith- -> alknet-, SSH auth username wraith -> alknet.
2.4 KiB
2.4 KiB
id, name, status, depends_on, scope, risk, impact, level
| id | name | status | depends_on | scope | risk | impact | level | ||
|---|---|---|---|---|---|---|---|---|---|
| transport/tls-transport | Implement TlsTransport and TlsAcceptor (feature-gated tls) | pending |
|
moderate | medium | component | implementation |
Description
Implement TLS transport that wraps TCP with tokio-rustls. Client-side: TlsTransport establishes a TCP connection and wraps it with a TLS client session. Server-side: TlsAcceptor accepts TCP connections and wraps them with a TLS server session.
Supports:
- Manual cert/key configuration (
--tls-cert,--tls-key) - insecure mode (accept self-signed certs) for development
tls_server_nameoverride for SNI (ADR-010)- Stealth mode support requires peeking at first bytes post-TLS-handshake (handled in server task, but TLS stream must support this)
Feature-gated behind tls feature flag.
Acceptance Criteria
crates/alknet-core/src/transport/tls.rs(behind#[cfg(feature = "tls")])TlsTransportholds: target addr, optionaltls_server_name,insecureflag, optional root cert for verificationTlsTransport::connect()does TCP connect then TLS client handshake viatokio_rustls::TlsConnector- When
insecure, accepts any certificate (dangerous,webpki_roots::CertStorebypass or custom verifier) - When not
insecure, verifies server cert against system roots + optional custom CA TlsTransport::describe()returns e.g."tls://example.com:443"TlsAcceptorholds:TcpListener,ServerConfig(fromrustls::ServerConfig)TlsAcceptor::accept()does TCP accept then TLS server handshake viatokio_rustls::TlsAcceptorTlsAcceptorconstructor accepts:tls_certpath/data,tls_keypath/data, optional ACME config (stub for now)TransportInfo.transport_kindisTransportKind::Tls { server_name }- Module re-exported from
transport/mod.rsbehind#[cfg(feature = "tls")] - Unit tests for connect/accept with self-signed certs (insecure mode)
- Integration test: full TLS client-to-server connection succeeds
References
- docs/architecture/transport.md — TlsTransport row, TLS cert provisioning
- docs/architecture/server.md — TLS certificate provisioning modes
- docs/architecture/decisions/008-acme-lets-encrypt.md — ACME cert support (feature-gated)
Notes
To be filled by implementation agent
Summary
To be filled on completion