1. 25 Mar, 2019 8 commits
  2. 22 Mar, 2019 1 commit
    • Jérome Perrin's avatar
      caddy: use same log format as apache · 5c23e132
      Jérome Perrin authored
      in apache frontend, we have been using:
      
      ```
      LogFormat "%h %l %{REMOTE_USER}i %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D" combined
      ```
      
      The %l is (from mod_log_config docs): Remote logname (from identd, if
      supplied). This will return a dash unless mod_ident is present and
      IdentityCheck is set On.
      
      In the case of apache frontend, it was always a - . This is missing in
      caddy frontend and our existing log processing tools (apachedex) cannot
      be used on frontend logs since we switched to Caddy.
      
      /reviewed-on !530
      5c23e132
  3. 21 Mar, 2019 6 commits
    • Łukasz Nowak's avatar
      caddy-frontend: Fix timeout on the backend · 5107d40b
      Łukasz Nowak authored
      dict in headers is smallcase, so it was never working in reality.
      5107d40b
    • Łukasz Nowak's avatar
      caddy-frontend: Prove that stale-if-error works · 115b6bf5
      Łukasz Nowak authored
      Added assertion which proves that the ATS is serving stale content in case if
      the backend does not work, according to RFC5861.
      
      It is beleived that stale-while-revalidate will work the same way, but it is
      much harder to test, thus it is not done directly.
      115b6bf5
    • Łukasz Nowak's avatar
      caddy-frontend: Adapt to ATS 7 · 7017a46e
      Łukasz Nowak authored
      Adapted configuration and instantiation to ATS 7.
      
      Deployment:
       * traffic_line has been replaced with traffic_ctl
       * access log, of squid style, is ascii instead of binary, to do so
         logging.config is generated
       * ip_allow.config is configured to allow access from any host
       * RFC 5861 (stale content on error or revalidate) is implemented with core
         instead with deprecated plugin
       * trafficserver-autoconf-port renamed to trafficserver-synthetic-port
       * proxy.config.system.mmap_max removed, as it is not used by the system anymore
      
      Tests:
       * As Via header is not returned to the client, it is dropped from the
         tests, instead its existence in the backend is checked.
       * Promise plugin trafficserver-cache-availability.py is re enabled, as
         it is expected to work immediately.
      7017a46e
    • Łukasz Nowak's avatar
      Use slapos.toolbox version 0.90 · 01f30221
      Łukasz Nowak authored
      01f30221
    • Łukasz Nowak's avatar
      caddy-frontend: Use trafficserver 7 · 80deff57
      Łukasz Nowak authored
      80deff57
    • Łukasz Nowak's avatar
      c7fc0f6d
  4. 18 Mar, 2019 2 commits
  5. 15 Mar, 2019 1 commit
  6. 14 Mar, 2019 3 commits
  7. 13 Mar, 2019 9 commits
    • Łukasz Nowak's avatar
      caddy-frontend: Switch AIKC to default true · a198be7f
      Łukasz Nowak authored
      It is better to have automation similar to previous implementation by
      default.
      a198be7f
    • Łukasz Nowak's avatar
      799412e3
    • Łukasz Nowak's avatar
    • Łukasz Nowak's avatar
    • Łukasz Nowak's avatar
      caddy-frontend: Implement AIKC · 28a1283d
      Łukasz Nowak authored
      AIKC - Automatic Internal Kedifa's Caucase CSR signing, which can be triggered
      by option automatic-internal-kedifa-caucase-csr.
      
      It signs all CSR which match csr_id and certificate from the nodes which needs them.
      28a1283d
    • Łukasz Nowak's avatar
      caddy-frontend: Expose csr_id over HTTPS · 7c5c99b1
      Łukasz Nowak authored
      csr_id is exposed over HTTPS with short living self signed certificate,
      which is transmitted via SlapOS Master. Thanks to this, it is possible to
      match csr_id with certificate of given partition and take decision if it shall
      be signed or not.
      
      This is "quite secure" apporach, a bit better than blidny trusting what CSR
      to sign in KeDiFa. The bootstrap information, which is short living
      (certificates are valid for 5 days), resides in SlapOS Master. The csr_id
      is not directly known to SlapOS Master, and shall be consumed as fast as
      possible by frontend cluster operator in order to sign CSR appearing in
      KeDiFa caucase. The known possible attack vector requires that attacker knows
      caucased HTTP listening port and can hijack HTTPS traffic to the csr_id-url
      to get the human approve his own csr_id. The second is hoped to be overcomed
      by publishing certificate of this endpoint via SlapOS Master.
      
      Unfortunately caucase-updater prefix is directly used to find real CSR, as the
      one generated is just a template for rerequest, thus csr_id would be different
      from really used by caucase-updater.
      7c5c99b1
    • Łukasz Nowak's avatar
      caddy-frontend: Implement KeDiFa SSL information · bc2b1742
      Łukasz Nowak authored
      Use KeDiFa to store keys, and transmit the url to the requester for master
      and slave partitions.
      
      Download keys on the slave partitions level.
      
      Use caucase to fetch main caucase CA.
      
      kedifa-caucase-url is published in order to have access to it.
      
      Note: caucase is prepended with kedifa, as this is that one.
      
      Use kedifa-csr tool to generate CSR and use caucase-updater macro.
      
      Switch to KeDiFa with SSL Auth and updated goodies.
      
      KeDiFa endpoint URLs are randomised.
      
      Only one (first) user certificate is going to be automatically accepted. This
      one shall be operated by the cluster owner, the requester of frontend master
      partition.
      
      Then he will be able to sign certificates for other users and also for
      services - so each node in the cluster.
      
      Special trick from https://security.stackexchange.com/questions/74345/provide-subjectaltname-to-openssl-directly-on-command-line
      is used for one command generation of extensions in the certificate.
      Note: We could upgrade to openssl 1.1.1 in order to have it really
      simplified (see https://security.stackexchange.com/a/183973 )
      
      Improve CSR readability by creating cluster-identification, which is master
      partition title, and use it as Organization of the CSR.
      
      Reserve slots for data exchange in KeDiFa.
      bc2b1742
    • Łukasz Nowak's avatar
      fb37422b
    • Łukasz Nowak's avatar
      stack/caucase: Improve library · 1cc80dd4
      Łukasz Nowak authored
      Improvements:
      
       * support CSR as a file
         Allow to pass template_csr as a file, as it is useful for some cases.
      
       * use dumps where needed, as it is available
      
       * fix rerequest internal call
      1cc80dd4
  8. 12 Mar, 2019 4 commits
  9. 11 Mar, 2019 5 commits
  10. 09 Mar, 2019 1 commit