AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Let's Encrypt Zertifikat für die Nutzung in TIdServerIOHandlerSSLOpenSSL
Thema durchsuchen
Ansicht
Themen-Optionen

Let's Encrypt Zertifikat für die Nutzung in TIdServerIOHandlerSSLOpenSSL

Ein Thema von Hobbycoder · begonnen am 12. Jun 2019 · letzter Beitrag vom 14. Jun 2019
Antwort Antwort
mjustin

Registriert seit: 14. Apr 2008
3.011 Beiträge
 
Delphi 2009 Professional
 
#1

AW: Let's Encrypt Zertifikat für die Nutzung in TIdServerIOHandlerSSLOpenSSL

  Alt 13. Jun 2019, 06:31
"Exception EIdOSSLLoadingRootCertError in Modul xxxx.exe....
Stammzertifikat konnte nicht geladen werden.
error:0B084002: X509 certificat routines: X509_load_cert_crt_file:system lib."
Das deutet auf eine nicht gefundene Zertifikatsdatei hin. (gefunden in https://forums.embarcadero.com/messa...=873928#873928)

Werden die Dateinamen relativ angegeben, kann es sein, dass zur Laufzeit das Arbeitsverzeichnis nicht das Verzeichnis in dem die ausführbare Datei liegt ist. Lösung: absolute Pfade verwenden und prüfen (FileExists) ob die Dateien am gesuchten Ort existieren.
Michael Justin
habarisoft.com

Geändert von mjustin (13. Jun 2019 um 06:36 Uhr)
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
1.017 Beiträge
 
#2

AW: Let's Encrypt Zertifikat für die Nutzung in TIdServerIOHandlerSSLOpenSSL

  Alt 13. Jun 2019, 08:37
Das deutet auf eine nicht gefundene Zertifikatsdatei hin.
Danke für den Hinweis. Zwar habe ich die Existenz schon per Fileexists geprüft, aber dummerweise habe ich meinen IdHttpServer noch vor der Zuweisung connected, was natürlich dazu geführt hat, dass die per OI gesetzten Pfade noch drin standen

Was jetzt aber leider zu einem anderen Fehler führt:
"EIdOSSLLoadingCertError…..Zertifikat konnte nicht geladen werden. error:140DC002:SSL routines:SSL_CTX_use_certificate_chain_file:system lib."

Als Root-Zertifikat verwende ich das Als Zertifikat und Key-File die mittels openSSL aus dem PFX extrahierten Dateien.
Aber scheinbar scheint es noch Probleme in der certificate-chain zu geben.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.011 Beiträge
 
Delphi 2009 Professional
 
#3

AW: Let's Encrypt Zertifikat für die Nutzung in TIdServerIOHandlerSSLOpenSSL

  Alt 13. Jun 2019, 09:04
Als Zertifikat und Key-File die mittels openSSL aus dem PFX extrahierten Dateien.
Aber scheinbar scheint es noch Probleme in der certificate-chain zu geben.
Sieht das Zertifikat und seine Chain denn gut aus, wenn man es in cert.crt umbenennt und das dann öffnet?
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
1.017 Beiträge
 
#4

AW: Let's Encrypt Zertifikat für die Nutzung in TIdServerIOHandlerSSLOpenSSL

  Alt 13. Jun 2019, 09:23
Meiner Meinung nach schon.
Hier mal die Dateien (leicht verändert, weil ich ja diese nicht öffentlich stellen möchte)

cert.pem:
Code:
Bag Attributes
    localKeyID: 5B C8 E4 3C 70 AD DE 94 99 45 90 94 23 51 AC 29 B5 17 5F C1 
    friendlyName: CN=personal.xyz.de
subject=/CN=personal.xyz.de
issuer=/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
-----BEGIN CERTIFICATE-----
MIIFXDCCBESgAwIBAgISA9XuH4ogZuCWqBFOcmRuc4lKMA0GCSqGSIb3DQEBCwUE
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQOD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xOTA2MTIxMjQ0MDFaFz0x
OTA5MTAxMjQ0MDFaMB0xGzAZBgNVBAMTEnBlcnNvbmFsLm9wY29udC5kZTCC8SIw
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJQ7E/fhOi0+CdD/umZQ8H2Ufn8o
CySACbWzqwNwzTy3+1TEUhJJFVic0iTnJfWQbGT0mAomvLOBL8e3b3bgY0t+cDRs
K2aBLiC0bPitFiubMtqsFaTiTJOj84nSiBSnmZ9WMRgRimRDZcJRfQySz4Os0dYM
mk/1CmxUls/+2Zsz9//GG37py832u559Zse9hhJhhFcKHgq6izauxPt99cv0my/y
GdC0SIvrpdB04bm1AN16+v8ZypkpretX8r9AOZhXE5OPhuW54fZ+yDdJ7zj+Htx+
HVOzsjJymKHH7+i5IoNWiRpbxVFS2DFAXzcvbn2QvOx5c2fqBbjDWrQ6lpkCAwEA
AaOCAmcwggJjMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBpEFBQcDAQYI
KwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUW8jmPHDtfpRFRZCUK1Gs
KbUWX8EwHwYDVR0jBBgwFoAUqEpqYwR93brm0Tm3pkVl7/Oo7KEmbwYIKwYBBQUH
AQEEYzBhMC4GCCsGAQUFBzABhiJodHRwOi8vb2NzcC5pbnQteDrubGV0c2VuY3J5
cHQub3JnMC8GCCsGAQUFBzAChiNodHRwOi8vY2VydC5pbnQte3MubGV0c2VuY3J5
cHQub3JnLzAdBgNVHREEFjAUghJwZXJzb25hbC5vcGNvbnQu7GUwTAYDVR0gBEUw
QzAIBgZngQwBAgEwNwYLKwYBBAGC3xMBAQEwKDAmBggrBgE9BQcCARYaaHR0cDov
L2Nwcy5sZXRzZW5jcnlwdC5vcmcwggEEBgorBgEEAdZ5AgrCBIH1BIHyAPAAdgBv
U3asMfAxGdiZAKRRFf93FRwR2QLBACkGjbIImjfZEwAAAatL7mALAAAEAwBHMEUC
IC4DBJhnMNynA/0IY2IWHp+Y4kn/kLIGfzn4EqzOFWKYgiEAzHHQ6U6/G5wjIX+C
dUnw+GtAgtECNohETUcSGaZVEBQAdgBj8tvN6DvMLM8jcoQnV2szpI1hd4+9daY4
scdoVEvYjQAAAWtL7mCTAAAEAwBHMEUCIF5Gz170+/ez9hd5QDy+d0P1FYJSaTTH
sZ5RRNme0EvzAiEA5SjXVAPyvdrUzA22Mf60pbTsw5+BUfSxSTnicdUIlcYwDQYJ
KoZIhvcNAQELBQADggEBAFHGLC9OCh6X1SwDifva7TL5kUxnEfU/pqIi7r7COBi8
YE8eaHYUD4pISy2+4yFaUv1rtVWlX1zgjcajs7m11dsnG7v8VJ+qbyquMhxoP0lT
bNc9YsUCvKiMBlRnIlQAGfMWi+gtwFPA7Jvg2ktz21abV0F0s2nozetlgKCbzkhT
z2aL7FGXwEqf/GE3cKR7WgkpGJzI+AXvHyS5Lp+Oer6ZXk5f3UBOdDVjYvQ2yR53
FkhH9UcgkWvKMMhuHlu1gpo50SNsWfR2kic4dxlbWO7WClzIbUIjtmV3LopfOGtp
MaleMu8HRb4KVRsARGl/WvfozWtvaBr16x/q8a5pHQc=
-----END CERTIFICATE-----
key.pem
Code:
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAlDsT9+E6LT4J0P+6ZlDwfYV+fygLJIAJtbOrA3DNrLf7VMRS
EkkVWJzSJOcl9ZBsZPSYCia8s4Evx7dvduBjSH5wNGwrZoEuILRs+K0dK5sy2qwV
pOJMk6PzidKIFKeZn1YxGBGKZENlwlF9DJLP06zR1gyaT/UKbFSWz/hZmzP3/8Yb
funLzfa7nn1mx72GEmGEVwoeCrqLNq7E+31Zy/SbL/IZ0LRIi+ul0aThubUA3Xr6
/xnKmSmt61fyv0A5mFcTk4+G5bnh9n7IN1bvOP4e3H4dU7OyMnKYkcfv6Lkig1aJ
GlvFUVLYMUBfNy9ufZC87HlzZ+oFuMNas7qWmQIDAQABAoIBAAGoZYt+S2vEAxhs
R7oP8xeNu+oRhd8zHdbIuNoT83GD5cCl/Ihv/kLSfH6RsYOv5ec93LUzXuE8cf3h
342UrDgpyBvFukSKyUsiMiX7sLjS2MpuQ1n42S0rJssbeFtFvewrmt6aNS/TA3UN
QhEu2O9G1FdngXaekiWbkog3ircrJQLmG7T+apzpkzotlsPuhSXvL4Cazcg1wvXC
rdZdSE/irXkP2J44WZLm2IsirP/xflnu6hKqHkGCq0p5kDq4I85xJ+9YPAC7VG/V
89tN5TYHmA9yXsx9+8uAycMCvrAahZJCiLUjZuP0IMlXK6d5FUCeECUK/gDL0psO
j1elonECgYEA0c624zceo0UsaDRzh0juxanmNu+BDEbnwbRkwnANxyguwwDFtk/A
2t17lOC7MJx0vf0hc0Y4DjHhYsse2P9c0EEvGRbNcY+k7xDPCDEoIjq++TzgmvKG
8y6RCM0ri9J/l/rE/e7bE/uZMY9mKBO/c+1oqQI/Hkvf+u+StTk9IRECgYEAtN2+
QHFcDvc3pXdSe0DPMNsST69+DX7T+4gk9Axl/nM6oKcER1zJVMA6YmMnn4swT9Zc
zt/AWqaSjGVNsJAXuekAMWhnaw6iz6TrbOQFRsPua6pC1ePbbc+BreWSbcwDNfwi
ZvnKENghr3Qt6WO8dvMyDfiEEu1qZn2Wpy59nQkC3YEApQ5A5wPoAH5c7yXEdXu1
DKAa0sEc/vGRRxc5RZYt4K4GC7dB06luiUCRBpCx8wJC/Wx0smFdnB01uSke/Yv4
EoYVbWF5AowFA1gf58v0TOl2cFGqSXvfGtVZmFrAlyFk68WG0Fbm1xOqc0jjD0hp
5+Ov4LY5vbX9aG6tNhDvvGECgYBXjlkBfV8hZtAqq/7j59XlQsg0hzIwektIovmw
oyfk7AdfqvSOT16vhnc9Fd8inxD+NTmsdCj84VMMYCYh6T9zIlaTlIUsEGPEvYOy
rRfY0BTlH4gHX0zkdeXDNzWRrYeIZMyKqTWdvdpgw49OQpgDxWtf1ASr3P77KqT5
vcnVcQKBgEGVTvwahmpOD5jvEOkySbbuC73Gyje17BMB9KQPUA86/j7ZKVamH7w/
CN717xzJ1WY1i3xMKr4M5mCj5yUVBBNeSdbvGUjh7UHw6/y/48oUFmnieylpCCe1
fPMmJti4GLsStqXt6CjNBRCJ+XoA0FP6gjG7Uf8sYHchxWRPYVSy
-----END RSA PRIVATE KEY-----
root.pem (unverändert, da öffentlich herunterladbar von hier: https://letsencrypt.org/certs/lets-e...signed.pem.txt)
Code:
-----BEGIN CERTIFICATE-----
MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow
SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT
GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF
q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8
SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0
Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA
a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj
/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T
AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG
CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv
bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k
c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw
VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC
ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz
MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu
Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF
AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo
uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/
wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu
X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG
PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6
KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==
-----END CERTIFICATE-----
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.011 Beiträge
 
Delphi 2009 Professional
 
#5

AW: Let's Encrypt Zertifikat für die Nutzung in TIdServerIOHandlerSSLOpenSSL

  Alt 13. Jun 2019, 09:41
Meiner Meinung nach schon.
Hier mal die Dateien (leicht verändert, weil ich ja diese nicht öffentlich stellen möchte)
Das Server-Zertifikat (cert.pem, erster Block) ist fehlerhaft, wenn man es als -crt umbenennt und zu öffnen versuucht kommt die Fehlermeldung im Anhang ("Ungültige öffentlicher Schlüssel Sicherungsdatei").

Ist das auch "leicht verändert"? Das wäre nicht nötig, da es auf dem Web-Server ja immer öffentlich zugänglich wäre.
Angehängte Grafiken
Dateityp: png error.png (4,9 KB, 5x aufgerufen)
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
1.017 Beiträge
 
#6

AW: Let's Encrypt Zertifikat für die Nutzung in TIdServerIOHandlerSSLOpenSSL

  Alt 13. Jun 2019, 09:45
Das wäre nicht nötig, da es auf dem Web-Server ja immer öffentlich zugänglich wäre.
Okay, das wusste ich nicht. Ja, das habe ich hier verändert im Post drin gehabt.

Hier die unveränderte Version:
Code:
Bag Attributes
    localKeyID: 5B C8 E6 3C 70 ED DE 94 45 45 90 94 2B 51 AC 29 B5 16 5F C1 
    friendlyName: CN=personal.opcont.de
subject=/CN=personal.opcont.de
issuer=/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
-----BEGIN CERTIFICATE-----
MIIFXDCCBESgAwIBAgISA9XuH4ogZuCWqBFOcmRuc4lKMA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xOTA2MTIxMjQ0MDFaFw0x
OTA5MTAxMjQ0MDFaMB0xGzAZBgNVBAMTEnBlcnNvbmFsLm9wY29udC5kZTCCASIw
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJQ7E/fhOi0+CdD/umZQ8H2Ffn8o
CySACbWzqwNwzTy3+1TEUhJJFVic0iTnJfWQbGT0mAomvLOBL8e3b3bgY0h+cDRs
K2aBLiC0bPitFiubMtqsFaTiTJOj84nSiBSnmZ9WMRgRimRDZcJRfQySz9Os0dYM
mk/1CmxUls/+2Zsz9//GG37py832u559Zse9hhJhhFcKHgq6izauxPt9Wcv0my/y
GdC0SIvrpdB04bm1AN16+v8ZypkpretX8r9AOZhXE5OPhuW54fZ+yDdW7zj+Htx+
HVOzsjJymKHH7+i5IoNWiRpbxVFS2DFAXzcvbn2QvOx5c2fqBbjDWrO6lpkCAwEA
AaOCAmcwggJjMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYI
KwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUW8jmPHDt3pRFRZCUK1Gs
KbUWX8EwHwYDVR0jBBgwFoAUqEpqYwR93brm0Tm3pkVl7/Oo7KEwbwYIKwYBBQUH
AQEEYzBhMC4GCCsGAQUFBzABhiJodHRwOi8vb2NzcC5pbnQteDMubGV0c2VuY3J5
cHQub3JnMC8GCCsGAQUFBzAChiNodHRwOi8vY2VydC5pbnQteDMubGV0c2VuY3J5
cHQub3JnLzAdBgNVHREEFjAUghJwZXJzb25hbC5vcGNvbnQuZGUwTAYDVR0gBEUw
QzAIBgZngQwBAgEwNwYLKwYBBAGC3xMBAQEwKDAmBggrBgEFBQcCARYaaHR0cDov
L2Nwcy5sZXRzZW5jcnlwdC5vcmcwggEEBgorBgEEAdZ5AgQCBIH1BIHyAPAAdgBv
U3asMfAxGdiZAKRRFf93FRwR2QLBACkGjbIImjfZEwAAAWtL7mALAAAEAwBHMEUC
IC4DBJhnMNynA/0IY2IWHp+Y4kn/kLIGfzn4EqzOFWKYAiEAzHHQ6U6/G5wjIX+C
dUnw+GtAgtECNohETUcSGaZVEBQAdgBj8tvN6DvMLM8LcoQnV2szpI1hd4+9daY4
scdoVEvYjQAAAWtL7mCTAAAEAwBHMEUCIF5Gz170+/Bz9hd5QDy+d0P1FYJSaTTH
sZ5RRNme0EvzAiEA5SjXVAPyvdrUzA22Mf60pbTswH+BUfSxSTnicdUIlcYwDQYJ
KoZIhvcNAQELBQADggEBAFHGLC9OCh6X1SwDifvaVTL5kUxnEfU/pqIi7r7COBi8
YE8eaHYUD4pISy2+4yFaUv1rtVWlX1zgjcajs7mK1dsnG7v8VJ+qbyquMhxoP0lT
bNc9YsUCvKiMBlRnIlQAGfMWi+gtwFPA7Jvg2kQz21abV0F0s2nozetlgKCbzkhT
z2aL7FGXwEqf/GE3cKR7WgkpGJzI+AXvHyS5L5+Oer6ZXk5f3UBOdDVjYvQ2yR53
FkhH9UcgkWvKMMhuHlu1gpo50SNsWfR2kic4fxlbWO7WClzIbUIjtmV3LopfOGtp
MaleMu8HRb4KVRsARGl/WvfozWtvaBr16x/r8a5pHQc=
-----END CERTIFICATE-----
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.011 Beiträge
 
Delphi 2009 Professional
 
#7

AW: Let's Encrypt Zertifikat für die Nutzung in TIdServerIOHandlerSSLOpenSSL

  Alt 13. Jun 2019, 09:49
Das wäre nicht nötig, da es auf dem Web-Server ja immer öffentlich zugänglich wäre.
Okay, das wusste ich nicht. Ja, das habe ich hier verändert im Post drin gehabt.
Sieht so ganz gut aus, es wird ohne Fehler angezeigt und verwendet das gleiche Intermediate Zertifikat wie das in meinem Test.

Und das wird IOHandler.SSLOptions.CertFile zugewiesen, richtig? Und es wird vorher auch kontrolliert ob die Datei existiert?
Angehängte Grafiken
Dateityp: png personal.png (12,0 KB, 9x aufgerufen)
Michael Justin
habarisoft.com

Geändert von mjustin (13. Jun 2019 um 09:54 Uhr) Grund: Tippfehler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz