

I think what people generally mean when they say programming language (other than just a language to write a program) is that the language is turing complete. Even with this more limited definition, JavaScript, Bash, and Powershell are turing complete and therefore programming languages.
Let’s Encrypt supports DNS verification, if you have access to update the zone file. It makes automation harder, but there are scripts to do the DNS update for the verification.