Опциональным вариантом является использование двоичного файла setuid, который запускается от имени другого пользователя для подписи сертификата.
У этого другого пользователя был бы доступ на чтение к ключу, но у «обычного» пользователя сервера приложений не было бы доступа на чтение. Поэтому, если кто-то скомпрометирует учетную запись сервера приложений, он сможет подписать только произвольные сертификаты, а не украсть закрытый ключ CA.
Другая возможность может заключаться в том, чтобы иметь некоторый механизм RPC для передачи запроса подписи другому процессу, выполняющемуся как другой пользователь, возможно, на другом хосте. Или другая виртуальная машина на том же хосте (но не внутри компьютера сервера приложений).
Любой из этих подходов просто уменьшает влияние компромисса, но все равно это плохо.