428 Sachverzeichnis BIO gets(), 326–328 BIO new(), 325, 329, 330, 332, 335, 336, 339, 340 BIO new accept(), 336 BIO new buffer ssl connect(), 340 BIO new connect(), 332 BIO new file(), 330, 331 BIO new fp(), 330, 331 BIO new ssl(), 340 BIO new ssl connect(), 340 BIO pop(), 325, 326, 336, 337 BIO push(), 325, 326 BIO puts(), 326–328, 335 BIO read(), 326–328, 335 BIO s accept(), 330, 335, 336 BIO s connect(), 330–332 BIO s fd(), 331 BIO s file(), 330 BIO set accept bios(), 336, 337 BIO set accept port(), 335, 336 BIO set bind mode(), 335, 336 BIO set buffer size(), 339 BIO set conn hostname, 334 BIO set conn hostname(), 332 BIO set conn int port(), 332 BIO set conn ip(), 332 BIO set conn port(), 332, 334 BIO set fd(), 332, 335 BIO set fp(), 330, 331, 334 BIO set read buffer size(), 339 BIO set ssl(), 339, 340 BIO set ssl mode(), 340 BIO set write buffer size(), 339 BIO should io special(), 328, 329 BIO should read(), 328, 329 BIO should retry(), 327, 328 BIO should write(), 328, 329 BIO write(), 326–328 Buffer-Overflow, 40, 41, 45, 47, 49–54, 57 bzero(), 187 CA, siehe Zertifizierungsstelle Certificate, 375 Certificate Signing Request, 412 Certification Authority, siehe Zertifizierungsstelle Challenge-Response-Authentifizierung, 315 Chiffrenfolge, 365 CIDR, siehe Classless Inter-Domain Routing Cipher Suite, 314, siehe Chiffrenfolge Classless Inter-Domain Routing, 162 close(), 26, 204 closelog(), 44 Common Name, 381, 382, 385, 413 connect(), 184, 185, 187–189, 203, 210, 245 cron, 96 CRYPTO dynlock value, 347, 348, 351 CRYPTO LOCK, 347–349, 351 CRYPTO num locks(), 346, 347 CRYPTO set dynlock create callback(), 347 CRYPTO set dynlock destroy callback(), 347 CRYPTO set dynlock lock callback(), 347 CRYPTO set id callback(), 346 CRYPTO set locking callback(), 346 Data Encryption Standard, siehe DES Datagramm, 4, 205 Dateideskriptor, 21, 22, 82, 83 Dateideskriptor-Tabelle, 22, 23, 82, 83 Datenverschlüsselung, asymmetrische, 305 Datenverschlüsselung, symmetrische, 304 daytime-Protokoll, 148, 149 DENIC, 160 DES, 305 Digital Signature Algorithm, siehe DSA Distinguished Name, 375, 411 DNS, siehe Domain Name System, siehe Domain Name System DNS-Alias, 157 Domain Name System, 157, 227 Domain-Name, vollständiger, 157 Drei-Wege-Handshake, 199 DSA, 309 EGD, 353 eintrittsinvariant, siehe reentrant Elternprozeß-ID, 81 Entropy Gathering Dæmon, siehe EGD ERR error string(), 344 ERR error string n(), 344
Sachverzeichnis 429 ERR get error(), 342, 343 ERR get error line(), 343 ERR get error line data(), 343 ERR load crypto strings(), 345 ERR peek error(), 342, 343 ERR peek error line(), 343 ERR peek error line data(), 343 ERR peek last error(), 342, 343 ERR peek last error line(), 343 ERR peek last error line data(), 343 ERR print errors(), 345 ERR print errors fp(), 345 errno, 137 Error-Queue, 342 Erzeuger-/Verbraucherproblem, 116, 126 ESMTP, 390 execl(), 90, 92–94 execle(), 91–93 execlp(), 91, 92 execv(), 91, 92 execve(), 91, 92 execvp(), 91–93 exit(), 15, 16, 18, 19, 86, 110 Exit-Handler, 16, 17, 19 fclose(), 36 FD CLR(), 219, 221 FD ISSET(), 219, 221, 222 FD SET(), 219, 221 FD ZERO(), 219, 221 fdopen(), 36, 212, 213 fflush(), 212, 213 fgetc(), 39 fgets(), 39 fileno(), 36, 212 fopen(), 36 fork(), 79–83, 96, 98, 101, 144, 145 Forkhandler, 145, 146 Format-String-Schwachstelle, 45, 54, 56, 57 fprintf(), 41 fputc(), 39, 40 fputs(), 39, 40 FQDN, siehe Domain-Name, vollständiger fread(), 40 freeaddrinfo(), 229, 234 freopen(), 36 fseek(), 213 fsetpos(), 213 Fully Qualified Domain Name, siehe Domain-Name, vollständiger fwrite(), 40 gai strerror(), 228 General Name, 380–382, 384, 385 getaddrinfo(), 227–231, 233, 234, 240, 242–245 getegid(), 77 geteuid(), 77 getgid(), 77 gethostbyaddr(), 227, 228 gethostbyname(), 227, 228 getpeername(), 213, 214, 338 getpid(), 75, 77 getppid(), 77 getservbyname(), 228 getservbyport(), 228 getsockname(), 213, 214 getty, 96 getuid(), 77 Group-ID, 20 Group-ID, effektive, 20 Group-ID, reale, 20 Group-ID, zusätzliche, 20 Hashfunktion, kollisionsresistente kryptographische, 307 Hashfunktion, kryptographische, 307 Hauptthread, 110 HMAC, 308 Host Byte Order, 169 Host, virtueller, 226, 318 Host-ID, 161, siehe Host-Identifikator, 162 Host-Identifikator, 161 htonl(), 177 htons(), 177 HTTP, 6 Hypertext Transfer Protocol, siehe HTTP IANA, siehe Internet Assigned Numbers Authority ICANN, siehe Internet Corporation for Assigned Names and Numbers ICMP, 4, 212
- Seite 1 und 2:
X. systems.press X.systems.press is
- Seite 3 und 4:
Markus Zahn unp@bit-oase.de http://
- Seite 5 und 6:
VI Vorwort ein Unix-ähnliches Betr
- Seite 7 und 8:
Inhaltsverzeichnis 1 Einführung ..
- Seite 9 und 10:
Inhaltsverzeichnis XI 5 Netzwerkpro
- Seite 11 und 12:
Beispielprogramme 2.1 exit-test.c .
- Seite 13 und 14:
Beispielprogramme XV 7.7 openssl-ut
- Seite 15 und 16:
2 1 Einführung durchaus unterschie
- Seite 17 und 18:
4 1 Einführung 1.1.2 Internet-Schi
- Seite 19 und 20:
6 1 Einführung abschließenden Ver
- Seite 21 und 22:
8 1 Einführung Die vielen verschie
- Seite 23 und 24:
10 2 Programmieren mit Unix-Prozess
- Seite 25 und 26:
12 2 Programmieren mit Unix-Prozess
- Seite 27 und 28:
14 2 Programmieren mit Unix-Prozess
- Seite 29 und 30:
16 2 Programmieren mit Unix-Prozess
- Seite 31 und 32:
18 2 Programmieren mit Unix-Prozess
- Seite 33 und 34:
20 2 Programmieren mit Unix-Prozess
- Seite 35 und 36:
22 2 Programmieren mit Unix-Prozess
- Seite 37 und 38:
24 2 Programmieren mit Unix-Prozess
- Seite 39 und 40:
26 2 Programmieren mit Unix-Prozess
- Seite 41 und 42:
28 2 Programmieren mit Unix-Prozess
- Seite 43 und 44:
30 2 Programmieren mit Unix-Prozess
- Seite 45 und 46:
32 2 Programmieren mit Unix-Prozess
- Seite 47 und 48:
34 2 Programmieren mit Unix-Prozess
- Seite 49 und 50:
36 2 Programmieren mit Unix-Prozess
- Seite 51 und 52:
38 2 Programmieren mit Unix-Prozess
- Seite 53 und 54:
40 2 Programmieren mit Unix-Prozess
- Seite 55 und 56:
42 2 Programmieren mit Unix-Prozess
- Seite 57 und 58:
44 2 Programmieren mit Unix-Prozess
- Seite 59 und 60:
46 2 Programmieren mit Unix-Prozess
- Seite 61 und 62:
48 2 Programmieren mit Unix-Prozess
- Seite 63 und 64:
50 2 Programmieren mit Unix-Prozess
- Seite 65 und 66:
52 2 Programmieren mit Unix-Prozess
- Seite 67 und 68:
54 2 Programmieren mit Unix-Prozess
- Seite 69 und 70:
56 2 Programmieren mit Unix-Prozess
- Seite 71 und 72:
58 2 Programmieren mit Unix-Prozess
- Seite 73 und 74:
60 2 Programmieren mit Unix-Prozess
- Seite 75 und 76:
62 2 Programmieren mit Unix-Prozess
- Seite 77 und 78:
64 2 Programmieren mit Unix-Prozess
- Seite 79 und 80:
66 2 Programmieren mit Unix-Prozess
- Seite 81 und 82:
68 2 Programmieren mit Unix-Prozess
- Seite 83 und 84:
70 2 Programmieren mit Unix-Prozess
- Seite 85 und 86:
72 2 Programmieren mit Unix-Prozess
- Seite 87 und 88:
74 2 Programmieren mit Unix-Prozess
- Seite 89 und 90:
76 2 Programmieren mit Unix-Prozess
- Seite 91 und 92:
78 2 Programmieren mit Unix-Prozess
- Seite 93 und 94:
80 2 Programmieren mit Unix-Prozess
- Seite 95 und 96:
82 2 Programmieren mit Unix-Prozess
- Seite 97 und 98:
84 2 Programmieren mit Unix-Prozess
- Seite 99 und 100:
86 2 Programmieren mit Unix-Prozess
- Seite 101 und 102:
88 2 Programmieren mit Unix-Prozess
- Seite 103 und 104:
90 2 Programmieren mit Unix-Prozess
- Seite 105 und 106:
92 2 Programmieren mit Unix-Prozess
- Seite 107 und 108:
94 2 Programmieren mit Unix-Prozess
- Seite 109 und 110:
96 2 Programmieren mit Unix-Prozess
- Seite 111 und 112:
98 2 Programmieren mit Unix-Prozess
- Seite 113 und 114:
100 2 Programmieren mit Unix-Prozes
- Seite 115 und 116:
3 Programmieren mit POSIX-Threads W
- Seite 117 und 118:
3.1 Grundlagen 105 t2 den selben Th
- Seite 119 und 120:
3.1 Grundlagen 107 11 12 return( NU
- Seite 121 und 122:
3.1 Grundlagen 109 Ready: Der Threa
- Seite 123 und 124:
14 printf( "Thread Nr. %d ist ferti
- Seite 125 und 126:
3.1 Grundlagen 113 Abläufe, deren
- Seite 127 und 128:
3.2 Synchronisation 115 Die Ausgabe
- Seite 129 und 130:
3.2 Synchronisation 117 1 #include
- Seite 131 und 132:
3.2 Synchronisation 119 Das vorgest
- Seite 133 und 134:
3.2 Synchronisation 121 Bevor ein M
- Seite 135 und 136:
1 #include 2 #include 3 #include
- Seite 137 und 138:
3.2 Synchronisation 125 97 exit( 0
- Seite 139 und 140:
3.2 Synchronisation 127 Mittels pth
- Seite 141 und 142:
3.2 Synchronisation 129 legt jedoch
- Seite 143 und 144:
1 #include 2 #include 3 #include
- Seite 145 und 146:
3.2 Synchronisation 133 96-103 In e
- Seite 147 und 148:
3.3 Pthreads und Unix-Prozesse 3.3
- Seite 149 und 150:
3.3 Pthreads und Unix-Prozesse 137
- Seite 151 und 152:
3.3 Pthreads und Unix-Prozesse 139
- Seite 153 und 154:
3.3 Pthreads und Unix-Prozesse 141
- Seite 155 und 156:
Beispiel 3.9. pthreads-signal.c, Te
- Seite 157 und 158:
3.3 Pthreads und Unix-Prozesse 145
- Seite 159 und 160:
4 Grundlagen der Socket-Programmier
- Seite 161 und 162:
4.1 Erste Schritte mit telnet und i
- Seite 163 und 164:
4.1 Erste Schritte mit telnet und i
- Seite 165 und 166:
4.1 Erste Schritte mit telnet und i
- Seite 167 und 168:
22 setvbuf( stdout , NULL, _IOLBF ,
- Seite 169 und 170:
4.2 IP-Namen und IP-Adressen 157 oh
- Seite 171 und 172:
4.2 IP-Namen und IP-Adressen 159 Ro
- Seite 173 und 174:
4.2 IP-Namen und IP-Adressen 161 7
- Seite 175 und 176:
4.2 IP-Namen und IP-Adressen 163 Ne
- Seite 177 und 178:
4.2 IP-Namen und IP-Adressen 165 Ta
- Seite 179 und 180:
4.2 IP-Namen und IP-Adressen 167 ::
- Seite 181 und 182:
4.2 IP-Namen und IP-Adressen 169 Al
- Seite 183 und 184:
4.2 IP-Namen und IP-Adressen 171 In
- Seite 185 und 186:
4.2 IP-Namen und IP-Adressen 173 Al
- Seite 187 und 188:
4.2 IP-Namen und IP-Adressen 175 4-
- Seite 189 und 190:
4.2 IP-Namen und IP-Adressen 177 #i
- Seite 191 und 192:
4.3 Sockets 179 Das Beispiel zeigt,
- Seite 193 und 194:
4.3 Sockets 181 wird. Auch hier set
- Seite 195 und 196:
4.3 Sockets 183 soll, nicht geeigne
- Seite 197 und 198:
4.3 Sockets 185 connect() erwartet
- Seite 199 und 200:
4.3 Sockets 187 42 sizeof( sa ) ) <
- Seite 201 und 202:
4.3 Sockets 189 kehrt umgehend mit
- Seite 203 und 204:
4.3 Sockets 191 Für ein Clientprog
- Seite 205 und 206:
4.3 Sockets 193 Mit der listen()-Fu
- Seite 207 und 208:
4.3 Sockets 195 Server Programm 3 a
- Seite 209 und 210:
12 int main( int argc, char *argv[]
- Seite 211 und 212:
4.3 Sockets 199 Nachdem das Clientp
- Seite 213 und 214:
4.3 Sockets 201 austausch beginnen.
- Seite 215 und 216:
4.3 Sockets 203 CLOSED passive open
- Seite 217 und 218:
4.3 Sockets 205 Während die Verbin
- Seite 219 und 220:
4.3 Sockets 207 eine Socket-Adreßs
- Seite 221 und 222:
4.3 Sockets 209 50-58 Die Antwort d
- Seite 223 und 224:
4.3 Sockets 211 Wir modifizieren un
- Seite 225 und 226:
4.3 Sockets 213 Ein- und Ausgabefun
- Seite 227 und 228:
4.3 Sockets 215 17-18 19-22 Neu ist
- Seite 229 und 230:
4.3 Sockets 217 82 83 alarm( 20 );
- Seite 231 und 232:
4.3 Sockets 219 auf gleichzeitig ei
- Seite 233 und 234:
4.3 Sockets 221 1-4 6-7 9-12 14-16
- Seite 235 und 236:
4.3 Sockets 223 4.3.12 Socket-Optio
- Seite 237 und 238:
4.3 Sockets 225 1 int socket; 2 str
- Seite 239 und 240:
4.4 Namensauflösung 227 Die Socket
- Seite 241 und 242:
4.4 Namensauflösung 229 Aufruf erf
- Seite 243 und 244:
4.4 Namensauflösung 231 1-17 ai_ca
- Seite 245 und 246:
81 close( sd ); 82 } 4.4 Namensaufl
- Seite 247 und 248:
5 Netzwerkprogrammierung in der Pra
- Seite 249 und 250:
5.1.1 Funktionsumfang der Testumgeb
- Seite 251 und 252:
5.1 Aufbau der Testumgebung 239 19
- Seite 253 und 254:
5.1 Aufbau der Testumgebung 241 Im
- Seite 255 und 256:
5.1 Aufbau der Testumgebung 243 72
- Seite 257 und 258:
5.1 Aufbau der Testumgebung 245 20-
- Seite 259 und 260:
5.1 Aufbau der Testumgebung 247 39
- Seite 261 und 262:
5.1 Aufbau der Testumgebung 249 69
- Seite 263 und 264:
5.1 Aufbau der Testumgebung 251 37
- Seite 265 und 266:
5.1 Aufbau der Testumgebung 253 77-
- Seite 267 und 268:
5.2 Iterative Server 255 165 166 ex
- Seite 269 und 270:
5.2 Iterative Server 257 1 #include
- Seite 271 und 272:
5.2 Iterative Server 259 49-62 64-7
- Seite 273 und 274:
5.2 Iterative Server 261 27 28 /* B
- Seite 275 und 276:
5.2 Iterative Server 263 ggf. seine
- Seite 277 und 278:
5.2 Iterative Server 265 zwischen j
- Seite 279 und 280:
5.3 Nebenläufige Server mit mehrer
- Seite 281 und 282:
5.3 Nebenläufige Server mit mehrer
- Seite 283 und 284:
5.3 Nebenläufige Server mit mehrer
- Seite 285 und 286:
5.3 Nebenläufige Server mit mehrer
- Seite 287 und 288:
5.4 Nebenläufige Server mit Prethr
- Seite 289 und 290:
5.4 Nebenläufige Server mit Prethr
- Seite 291 und 292:
5.4 Nebenläufige Server mit Prethr
- Seite 293 und 294:
5.5 Nebenläufige Server mit mehrer
- Seite 295 und 296:
5.5 Nebenläufige Server mit mehrer
- Seite 297 und 298:
48 for(;;) 49 { 50 slen = sizeof( s
- Seite 299 und 300:
117 exit( EXIT_FAILURE ); 118 } 5.5
- Seite 301 und 302:
5.6 Nebenläufige Server mit Prefor
- Seite 303 und 304:
1 #include 2 #include 3 #include
- Seite 305 und 306:
5.6 Nebenläufige Server mit Prefor
- Seite 307 und 308:
99 exit( EXIT_FAILURE ); 100 } 5.6
- Seite 309 und 310:
5.6 Nebenläufige Server mit Prefor
- Seite 311 und 312:
5.7 Zusammenfassung 299 Zeiten aus
- Seite 313 und 314:
6 Netzwerkprogrammierung mit SSL Di
- Seite 315 und 316:
6.1 Strategien zur Absicherung des
- Seite 317 und 318:
6.1 Strategien zur Absicherung des
- Seite 319 und 320:
6.1 Strategien zur Absicherung des
- Seite 321 und 322:
6.1 Strategien zur Absicherung des
- Seite 323 und 324:
6.1 Strategien zur Absicherung des
- Seite 325 und 326:
6.2 SSL-Grundlagen 313 Das via SSL
- Seite 327 und 328:
6.2 SSL-Grundlagen 315 daraus entsp
- Seite 329 und 330:
6.2 SSL-Grundlagen 317 1. Der Clien
- Seite 331 und 332:
6.2 SSL-Grundlagen 319 SSL-Upgrade
- Seite 333 und 334:
6.2 SSL-Grundlagen 321 Port auf SSL
- Seite 335 und 336:
6.3 OpenSSL-Basisfunktionalität 32
- Seite 337 und 338:
6.3 OpenSSL-Basisfunktionalität 32
- Seite 339 und 340:
6.3 OpenSSL-Basisfunktionalität 32
- Seite 341 und 342:
6.3 OpenSSL-Basisfunktionalität 32
- Seite 343 und 344:
4 bio = BIO_new( BIO_s_file() ); 5
- Seite 345 und 346:
6.3 OpenSSL-Basisfunktionalität 33
- Seite 347 und 348:
6.3 OpenSSL-Basisfunktionalität 33
- Seite 349 und 350:
6.3 OpenSSL-Basisfunktionalität 33
- Seite 351 und 352:
6.3 OpenSSL-Basisfunktionalität 33
- Seite 353 und 354:
6.3 OpenSSL-Basisfunktionalität 34
- Seite 355 und 356:
6.3 OpenSSL-Basisfunktionalität 34
- Seite 357 und 358:
6.3 OpenSSL-Basisfunktionalität 34
- Seite 359 und 360:
6.3 OpenSSL-Basisfunktionalität 34
- Seite 361 und 362:
19 { 6.3 OpenSSL-Basisfunktionalit
- Seite 363 und 364:
6.3 OpenSSL-Basisfunktionalität 35
- Seite 365 und 366:
6.3 OpenSSL-Basisfunktionalität 35
- Seite 367 und 368:
6.3 OpenSSL-Basisfunktionalität 35
- Seite 369 und 370:
7 Client-/Server-Programmierung mit
- Seite 371 und 372:
7.2 Der SSL-Kontext 359 13-18 20-25
- Seite 373 und 374:
7.2 Der SSL-Kontext 361 aus der Bes
- Seite 375 und 376:
7.2 Der SSL-Kontext 363 47-57 59-69
- Seite 377 und 378:
7.2 Der SSL-Kontext 365 #include l
- Seite 379 und 380:
7.2 Der SSL-Kontext 367 wie folgt z
- Seite 381 und 382:
7.3 Sicherer Umgang mit X.509-Zerti
- Seite 383 und 384:
7.3 Sicherer Umgang mit X.509-Zerti
- Seite 385 und 386:
12 #include "openssl -util.h" 7.3 S
- Seite 387 und 388: 7.3 Sicherer Umgang mit X.509-Zerti
- Seite 389 und 390: 7.3 Sicherer Umgang mit X.509-Zerti
- Seite 391 und 392: 7.3 Sicherer Umgang mit X.509-Zerti
- Seite 393 und 394: 7.3 Sicherer Umgang mit X.509-Zerti
- Seite 395 und 396: 7.3 Sicherer Umgang mit X.509-Zerti
- Seite 397 und 398: 7.3 Sicherer Umgang mit X.509-Zerti
- Seite 399 und 400: 7.3 Sicherer Umgang mit X.509-Zerti
- Seite 401 und 402: 7.4 Client-/Server-Beispiel: SMTP m
- Seite 403 und 404: 16 { 17 BIO_puts( bio, req ); 18 BI
- Seite 405 und 406: 7.4 Client-/Server-Beispiel: SMTP m
- Seite 407 und 408: 7.4 Client-/Server-Beispiel: SMTP m
- Seite 409 und 410: 7.4 Client-/Server-Beispiel: SMTP m
- Seite 411 und 412: 7.4 Client-/Server-Beispiel: SMTP m
- Seite 413 und 414: 98 { 7.4 Client-/Server-Beispiel: S
- Seite 415 und 416: 7.4 Client-/Server-Beispiel: SMTP m
- Seite 417 und 418: 227 BIO_free( bio ); 228 exit( EXIT
- Seite 419 und 420: 7.5 Zusammenfassung 407 oder den An
- Seite 421 und 422: 410 A Anhang Erzeugen eines geheime
- Seite 423 und 424: 412 A Anhang A.1.2 Neue Zertifikate
- Seite 425 und 426: 414 A Anhang $ openssl ca -out serv
- Seite 427 und 428: 416 A Anhang auf Null gezählt hat,
- Seite 429 und 430: 418 A Anhang 6-11 13-26 28-46 48-53
- Seite 431 und 432: 420 A Anhang 69 barrier ->cycle++;
- Seite 433 und 434: Literaturverzeichnis [BLFN96] Tim B
- Seite 435 und 436: Literaturverzeichnis 425 [Kle01] Jo
- Seite 437: Sachverzeichnis Öffnen, aktives, 1
- Seite 441 und 442: Sachverzeichnis 431 Protokoll, verb
- Seite 443 und 444: SSL VERIFY FAIL IF NO PEER CERT, 37